diff --git a/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp
index c79e115af628c17c8bb1ec40b3ccad4eede61d81..55534d5d9a283672da3f61abd67da9bff144975c 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp
@@ -62,7 +62,7 @@ bool ChangeImportsVisitor::add(QmlJS::AST::UiProgram *ast, const Import &import)
             if (!c.isSpace() && c != QLatin1Char(';'))
                 break;
         }
-        replace(insertionPoint, 0, QLatin1String("\n") + import.toString(false));
+        replace(insertionPoint+1, 0, QLatin1String("\n") + import.toString(false));
     } else {
         replace(0, 0, import.toString(false) + QLatin1String("\n\n"));
     }
diff --git a/src/plugins/qmldesigner/designercore/model/rewriteaction.cpp b/src/plugins/qmldesigner/designercore/model/rewriteaction.cpp
index 6475137688b69ff5848da506f2a10c9ad9561858..1d344887ad5ed4b37e81bb38c7baa288db6b9191 100644
--- a/src/plugins/qmldesigner/designercore/model/rewriteaction.cpp
+++ b/src/plugins/qmldesigner/designercore/model/rewriteaction.cpp
@@ -369,7 +369,7 @@ QString AddImportRewriteAction::info() const
 bool RemoveImportRewriteAction::execute(QmlDesigner::QmlRefactoring &refactoring,
                                         ModelNodePositionStorage &/*positionStore*/)
 {
-    const bool result = refactoring.addImport(m_import);
+    const bool result = refactoring.removeImport(m_import);
 
     if (!result)
         qDebug() << "*** RemoveImportRewriteAction::execute failed in changeImports ("
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index 909487cfcc64441b9b231907457b111346bac6be..6288aabe5f3b332f90200344dc511092a66a09c9 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -514,7 +514,7 @@ void TextToModelMerger::setupImports(const Document::Ptr &doc,
                 differenceHandler.modelMissesImport(newImport);
         } else {
             const Import newImport =
-                    Import::createLibraryImport(flatten(import->importUri), as, version);
+                    Import::createLibraryImport(flatten(import->importUri), version, as);
 
             if (!existingImports.removeOne(newImport))
                 differenceHandler.modelMissesImport(newImport);
diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp
index b3a36212ce4c1213a038ee9f8741e4b4e4fa35b7..8ff2caba1bc86e4c90abe31d680fb3aaf3811022 100644
--- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp
+++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp
@@ -767,6 +767,131 @@ void TestCore::testRewriterActionCompression()
     QCOMPARE(textEdit.toPlainText(), expected);
 }
 
+void TestCore::testRewriterImports()
+{
+    QString fileName = QString(QTCREATORDIR) + "/tests/auto/qml/qmldesigner/data/fx/imports.qml";
+    QFile file(fileName);
+    QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
+
+    QPlainTextEdit textEdit;
+    textEdit.setPlainText(file.readAll());
+    NotIndentingTextEditModifier modifier(&textEdit);
+
+    QScopedPointer<Model> model(Model::create("Qt/Item"));
+    model->setFileUrl(QUrl::fromLocalFile(fileName));
+
+    QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView());
+    testRewriterView->setTextModifier(&modifier);
+    model->attachView(testRewriterView.data());
+
+    QVERIFY(testRewriterView->errors().isEmpty());
+
+    QVERIFY(model->imports().size() == 3);
+
+    // import Qt 4.7
+    Import import = model->imports().at(0);
+    QVERIFY(import.isLibraryImport());
+    QCOMPARE(import.url(), QString("Qt"));
+    QVERIFY(import.hasVersion());
+    QCOMPARE(import.version(), QString("4.7"));
+    QVERIFY(!import.hasAlias());
+
+    // import "subitems"
+    import = model->imports().at(1);
+    QVERIFY(import.isFileImport());
+    QCOMPARE(import.file(), QString("subitems"));
+    QVERIFY(!import.hasVersion());
+    QVERIFY(!import.hasAlias());
+
+    // import org.webkit 1.0 as Web
+    import = model->imports().at(2);
+    QVERIFY(import.isLibraryImport());
+    QCOMPARE(import.url(), QString("org.webkit"));
+    QVERIFY(import.hasVersion());
+    QCOMPARE(import.version(), QString("1.0"));
+    QVERIFY(import.hasAlias());
+    QCOMPARE(import.alias(), QString("Web"));
+}
+
+void TestCore::testRewriterChangeImports()
+{
+    const QLatin1String qmlString("\n"
+                                  "import Qt 4.7\n"
+                                  "\n"
+                                  "Rectangle {}\n");
+
+    QPlainTextEdit textEdit;
+    textEdit.setPlainText(qmlString);
+    NotIndentingTextEditModifier modifier(&textEdit);
+
+    QScopedPointer<Model> model(Model::create("Qt/Rectangle"));
+
+    QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView(0, RewriterView::Amend));
+    testRewriterView->setTextModifier(&modifier);
+    model->attachView(testRewriterView.data());
+
+    QVERIFY(testRewriterView->errors().isEmpty());
+
+    //
+    // Add / Remove an import in the model
+    //
+    Import webkitImport = Import::createLibraryImport("org.webkit", "1.0");
+    model->addImport(webkitImport);
+
+    const QLatin1String qmlWithImport("\n"
+                                 "import Qt 4.7\n"
+                                 "import org.webkit 1.0\n"
+                                 "\n"
+                                 "Rectangle {}\n");
+    QCOMPARE(textEdit.toPlainText(), qmlWithImport);
+
+    model->removeImport(webkitImport);
+
+    QCOMPARE(model->imports().size(), 1);
+    QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7"));
+
+    QCOMPARE(textEdit.toPlainText(), qmlString);
+
+
+    //
+    // Add / Remove an import in the model (with alias)
+    //
+    webkitImport = Import::createLibraryImport("org.webkit", "1.0", "Web");
+    model->addImport(webkitImport);
+
+    const QLatin1String qmlWithAliasImport("\n"
+                                 "import Qt 4.7\n"
+                                 "import org.webkit 1.0 as Web\n"
+                                 "\n"
+                                 "Rectangle {}\n");
+    QCOMPARE(textEdit.toPlainText(), qmlWithAliasImport);
+
+    model->removeImport(webkitImport);
+
+    QCOMPARE(model->imports().size(), 1);
+    QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7"));
+
+    QCOMPARE(textEdit.toPlainText(), qmlString);
+
+
+    //
+    // Add / Remove an import in text
+    //
+    textEdit.setPlainText(qmlWithImport);
+    QCOMPARE(model->imports().size(), 2);
+    QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7"));
+    QCOMPARE(model->imports().last(), Import::createLibraryImport("org.webkit", "1.0"));
+
+    textEdit.setPlainText(qmlWithAliasImport);
+    QCOMPARE(model->imports().size(), 2);
+    QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7"));
+    QCOMPARE(model->imports().last(), Import::createLibraryImport("org.webkit", "1.0", "Web"));
+
+    textEdit.setPlainText(qmlString);
+    QCOMPARE(model->imports().size(), 1);
+    QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7"));
+}
+
 void TestCore::testRewriterForGradientMagic()
 {
     const QLatin1String qmlString("\n"
diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.h b/tests/auto/qml/qmldesigner/coretests/testcore.h
index 685a1e6a729b01cf7169cf8a140c79e1b678fefe..3f29d22be15e50236f42fa19db05c11b3dd8fbed 100644
--- a/tests/auto/qml/qmldesigner/coretests/testcore.h
+++ b/tests/auto/qml/qmldesigner/coretests/testcore.h
@@ -129,6 +129,8 @@ private slots:
     void testRewriterGroupedProperties();
     void testRewriterPreserveOrder();
     void testRewriterActionCompression();
+    void testRewriterImports();
+    void testRewriterChangeImports();
 
     //
     // unit tests QmlModelNodeFacade/QmlModelState
diff --git a/tests/auto/qml/qmldesigner/data/fx/imports.qml b/tests/auto/qml/qmldesigner/data/fx/imports.qml
new file mode 100644
index 0000000000000000000000000000000000000000..0c528046e0fd3ca9ed3be6c63ad7c7e8c76b3d89
--- /dev/null
+++ b/tests/auto/qml/qmldesigner/data/fx/imports.qml
@@ -0,0 +1,6 @@
+import Qt 4.7
+import "subitems"
+import org.webkit 1.0 as Web
+
+Rectangle {
+}