diff --git a/classes/dlg.php b/classes/dlg.php
index f62a42b4dd28d41fb57a2289d7acf04c3a9ee785..4240ad222358bc62c81c45fb4951c6671b699083 100644
--- a/classes/dlg.php
+++ b/classes/dlg.php
@@ -13,28 +13,6 @@ class Dlg extends Handler_Protected {
 		return false;
 	}
 
-	function importOpml() {
-		print_notice("If you have imported labels and/or filters, you might need to reload preferences to see your new data.");
-
-		print "<div class='panel panel-scrollable'>";
-
-		$opml = new OPML($_REQUEST);
-
-		$opml->opml_import($_SESSION["uid"]);
-
-		print "</div>";
-
-		print "<footer class='text-center'>";
-		print "<button dojoType='dijit.form.Button'
-			onclick=\"dijit.byId('opmlImportDlg').execute()\">".
-			__('Close this window')."</button>";
-		print "</footer>";
-
-		print "</div>";
-
-		//return;
-	}
-
 	function printTagCloud() {
 		print "<div class='panel text-center'>";
 
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index 949b23c2054283433ce825de27ddb15694f661eb..5fcafeaaeb6683249d1424875810d97f77a4d908 100755
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -1194,6 +1194,11 @@ class Pref_Feeds extends Handler_Protected {
 		Feeds::add_feed_category($feed_cat);
 	}
 
+	function importOpml() {
+		$opml = new OPML($_REQUEST);
+		$opml->opml_import($_SESSION["uid"]);
+	}
+
 	function index() {
 
 		print "<div dojoType='dijit.layout.AccordionContainer' region='center'>";
@@ -1340,17 +1345,11 @@ class Pref_Feeds extends Handler_Protected {
 
 		print_notice("Only main settings profile can be migrated using OPML.");
 
-		print "<iframe id=\"upload_iframe\"
-			name=\"upload_iframe\" onload=\"Helpers.OPML.onImportComplete(this)\"
-			style=\"width: 400px; height: 100px; display: none;\"></iframe>";
-
-		print "<form  name='opml_form' style='display : inline-block' target='upload_iframe'
-			enctype='multipart/form-data' method='POST'
-			action='backend.php'>
+		print "<form id='opml_import_form' method='post' enctype='multipart/form-data' >
 			<label class='dijitButton'>".__("Choose file...")."
 				<input style='display : none' id='opml_file' name='opml_file' type='file'>&nbsp;
 			</label>
-			<input type='hidden' name='op' value='dlg'>
+			<input type='hidden' name='op' value='pref-feeds'>
 			<input type='hidden' name='csrf_token' value='".$_SESSION['csrf_token']."'>
 			<input type='hidden' name='method' value='importOpml'>
 			<button dojoType='dijit.form.Button' class='alt-primary' onclick=\"return Helpers.OPML.import();\" type=\"submit\">" .
diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js
index f9cb450e53200f87a982fa093a8a8ae25551abac..6fabc48df67e958637ac1210bbddf921888b84f6 100644
--- a/js/PrefHelpers.js
+++ b/js/PrefHelpers.js
@@ -220,9 +220,42 @@ const	Helpers = {
 			} else {
 				Notify.progress("Importing, please wait...", true);
 
-				Element.show("upload_iframe");
+				const xhr = new XMLHttpRequest();
 
-				return true;
+				xhr.open( 'POST', 'backend.php', true );
+				xhr.onload = function () {
+					Notify.close();
+
+					const dialog = new dijit.Dialog({
+						title: __("OPML Import"),
+						style: "width: 600px",
+						onCancel: function () {
+							window.location.reload();
+						},
+						execute: function () {
+							window.location.reload();
+						},
+						content: `
+							<div class='alert alert-info'>
+								${__("If you have imported labels and/or filters, you might need to reload preferences to see your new data.")}
+							</div>
+							<div class='panel panel-scrollable'>
+								${xhr.responseText}
+							</div>
+							<footer class='text-center'>
+								<button dojoType='dijit.form.Button' type='submit' class='alt-primary'>
+									${__('Close this window')}
+								</button>
+							</footer>
+						`
+					});
+
+					dialog.show();
+				};
+
+				xhr.send(new FormData($("opml_import_form")));
+
+				return false;
 			}
 		},
 		onImportComplete: function(iframe) {