diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 647f16206d74c189c6304625ae748ee3cb4756c4..5388c5cce7fecfef05d89ea48312765b541ffbb1 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -1041,6 +1041,23 @@ void BaseTextEditor::moveLineUpDown(bool up)
         move.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
     }
     QString text = move.selectedText();
+
+    RefactorMarkers affectedMarkers;
+    RefactorMarkers nonAffectedMarkers;
+    QList<int> markerOffsets;
+
+    foreach (const RefactorMarker &marker, d->m_refactorOverlay->markers()) {
+        //test if marker is part of the selection to be moved
+        if ((move.selectionStart() <= marker.cursor.position()) && (move.selectionEnd() >= marker.cursor.position())) {
+            affectedMarkers.append(marker);
+            //remember the offset of markers in text
+            int offset = marker.cursor.position() - move.selectionStart();
+            markerOffsets.append(offset);
+        } else {
+            nonAffectedMarkers.append(marker);
+        }
+    }
+
     move.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
     move.removeSelectedText();
 
@@ -1069,6 +1086,13 @@ void BaseTextEditor::moveLineUpDown(bool up)
         move.setPosition(end, QTextCursor::KeepAnchor);
     }
 
+    //update positions of affectedMarkers
+    for (int i=0;i < affectedMarkers.count(); i++) {
+        int newPosition = start + markerOffsets.at(i);
+        affectedMarkers[i].cursor.setPosition(newPosition);
+    }
+    d->m_refactorOverlay->setMarkers(nonAffectedMarkers + affectedMarkers);
+
     reindent(document(), move);
     move.endEditBlock();