diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp
index 1f16fab7b88f09deef823eab9f0c442b51f15f12..2695bf0c903e51f962be2460a74b1e94d2875112 100644
--- a/src/plugins/bineditor/bineditor.cpp
+++ b/src/plugins/bineditor/bineditor.cpp
@@ -940,19 +940,18 @@ void BinEditor::setCursorPosition(int pos, MoveMode moveMode)
     pos = qMin(m_size-1, qMax(0, pos));
     int oldCursorPosition = m_cursorPosition;
 
-    bool hasSelection = m_anchorPosition != m_cursorPosition;
+    bool hadSelection = hasSelection();
     m_lowNibble = false;
-    if (!hasSelection)
+    if (!hadSelection)
         updateLines();
     m_cursorPosition = pos;
     if (moveMode == MoveAnchor) {
-        if (hasSelection)
+        if (hadSelection)
             updateLines(m_anchorPosition, oldCursorPosition);
         m_anchorPosition = m_cursorPosition;
     }
 
-    hasSelection = m_anchorPosition != m_cursorPosition;
-    updateLines(hasSelection ? oldCursorPosition : m_cursorPosition, m_cursorPosition);
+    updateLines(hadSelection || hasSelection() ? oldCursorPosition : m_cursorPosition, m_cursorPosition);
     ensureCursorVisible();
     emit cursorPositionChanged(m_cursorPosition);
 }