diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index cf5dd941500fe2514b8c864c8e862d2b9380e768..81a1dd18d6248dff9e9511d8a4cfc2c0415e88b7 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -636,6 +636,8 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
     context->enterScope(astNode);
 
     QSet<QString> modelPropertyNames = QSet<QString>::fromList(modelNode.propertyNames());
+    if (!modelNode.id().isEmpty())
+        modelPropertyNames.insert(QLatin1String("id"));
     QList<UiObjectMember *> defaultPropertyItems;
 
     for (UiObjectMemberList *iter = astInitializer->members; iter; iter = iter->next) {
@@ -744,7 +746,10 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
         AbstractProperty modelProperty = modelNode.property(modelPropertyName);
 
         // property deleted.
-        differenceHandler.propertyAbsentFromQml(modelProperty);
+        if (modelPropertyName == QLatin1String("id"))
+            differenceHandler.idsDiffer(modelNode, QString());
+        else
+            differenceHandler.propertyAbsentFromQml(modelProperty);
     }
 
     context->leaveScope();
diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp
index 1b40436aff6607348b72c4f3dcfd1ca9acdaba40..b3a36212ce4c1213a038ee9f8741e4b4e4fa35b7 100644
--- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp
+++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp
@@ -5441,7 +5441,7 @@ void TestCore::testRewriterRemoveId()
     QVERIFY(view.data());
     model->attachView(view.data());
 
-    QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView());
+    QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView(0, TestRewriterView::Amend));
     testRewriterView->setTextModifier(&textModifier);
     model->attachView(testRewriterView.data());
 
@@ -5449,7 +5449,6 @@ void TestCore::testRewriterRemoveId()
     QVERIFY(rootModelNode.isValid());
     QCOMPARE(rootModelNode.id(), QString("rect"));
 
-    QSKIP("Fix me!!!! Task BAUHAUS-780", SkipAll);
     //
     // remove id in text
     //
diff --git a/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp b/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp
index b12c164a6de808a31e7799b8cb7000d1637261c2..eb3cf27b80b1d8a3ef7e8c8a630c5af9c99add6d 100644
--- a/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp
+++ b/tests/auto/qml/qmldesigner/coretests/testrewriterview.cpp
@@ -83,7 +83,9 @@ VariantProperty TestModelToTextMerger::findAddedVariantProperty(const VariantPro
     return VariantProperty();
 }
 
-TestRewriterView::TestRewriterView(QObject *parent) : RewriterView(RewriterView::Validate, parent)
+TestRewriterView::TestRewriterView(QObject *parent,
+                                   DifferenceHandling differenceHandling)
+    : RewriterView(differenceHandling, parent)
 {
 }
 
diff --git a/tests/auto/qml/qmldesigner/coretests/testrewriterview.h b/tests/auto/qml/qmldesigner/coretests/testrewriterview.h
index 0fa319f21994b111e6c63b2009e248060f1b9df4..c313fe5bed9cb6e1764a5374d34978b64e50ed94 100644
--- a/tests/auto/qml/qmldesigner/coretests/testrewriterview.h
+++ b/tests/auto/qml/qmldesigner/coretests/testrewriterview.h
@@ -53,7 +53,8 @@ class TestRewriterView : public RewriterView
 Q_OBJECT
 
 public:
-    TestRewriterView(QObject *parent = 0);
+    TestRewriterView(QObject *parent = 0,
+                     DifferenceHandling differenceHandling = RewriterView::Validate);
 
     Internal::TestModelToTextMerger *modelToTextMerger() const;
     Internal::TextToModelMerger *textToModelMerger() const;