diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp
index 30a2011c982aaa59bf21b06f0ac6ca3303160231..986a8b868f7b6b00746adb41739db84cecdbd156 100644
--- a/src/plugins/qmldesigner/designmodewidget.cpp
+++ b/src/plugins/qmldesigner/designmodewidget.cpp
@@ -311,14 +311,15 @@ void DocumentWidget::setAutoSynchronization(bool sync)
                 selectedNode = rewriter->selectedModelNodes().first();
 
             if (selectedNode.isValid()) {
-                int nodeOffset = rewriter->nodeOffset(selectedNode);
-                QTextCursor editTextCursor = m_textBuffer->textCursor();
-                if (nodeOffset > 0
-                    && nodeForPosition(editTextCursor.position()) != selectedNode) {
-                    if (debug)
-                        qDebug() << "Moving text cursor to " << nodeOffset;
-                    editTextCursor.setPosition(nodeOffset);
-                    m_textBuffer->setTextCursor(editTextCursor);
+                const int nodeOffset = rewriter->nodeOffset(selectedNode);
+                if (nodeOffset > 0) {
+                    const ModelNode currentSelectedNode
+                            = nodeForPosition(m_textBuffer->textCursor().position());
+                    if (currentSelectedNode != selectedNode) {
+                        int line, column;
+                        textEditor()->convertPosition(nodeOffset, &line, &column);
+                        textEditor()->gotoLine(line, column);
+                    }
                 }
             }
         }