diff --git a/src/plugins/qmldesigner/core/model/rewriterview.cpp b/src/plugins/qmldesigner/core/model/rewriterview.cpp
index b36a898471f55bd49b2aac903a6627e2c34c5420..698486fe900444f114176b495875c91b12a0658f 100644
--- a/src/plugins/qmldesigner/core/model/rewriterview.cpp
+++ b/src/plugins/qmldesigner/core/model/rewriterview.cpp
@@ -433,9 +433,12 @@ void RewriterView::enterErrorState(const QString &errorMessage)
 
 void RewriterView::resetToLastCorrectQml()
 {
-    m_textModifier->textDocument()->setPlainText(lastCorrectQmlSource);
+    m_textModifier->textDocument()->undo();
+    // FIXME: enable the next line when commit 54290ef776a311f0c303e2a8df4de5e39e9a032a shows up in Qt.
+//    m_textModifier->textDocument()->clearUndoRedoStacks(QTextDocument::RedoStack);
     ModelAmender differenceHandler(m_textToModelMerger.data());
-    m_textToModelMerger->load(lastCorrectQmlSource.toUtf8(), differenceHandler);
+//    m_textToModelMerger->load(lastCorrectQmlSource.toUtf8(), differenceHandler);
+    m_textToModelMerger->load(m_textModifier->text().toUtf8(), differenceHandler);
 
     leaveErrorState();
 }