@@ -1307,13 +1307,13 @@ protected override void OnKeyDown(KeyEventArgs e)
                 {
                     case Key.Left:
                         selection = DetectSelection();
-                        MoveHorizontal(-1, hasWholeWordModifiers, selection);
+                        MoveHorizontal(-1, hasWholeWordModifiers, selection, true);
                         movement = true;
                         break;
 
                     case Key.Right:
                         selection = DetectSelection();
-                        MoveHorizontal(1, hasWholeWordModifiers, selection);
+                        MoveHorizontal(1, hasWholeWordModifiers, selection, true);
                         movement = true;
                         break;
 
@@ -1781,7 +1781,7 @@ internal static int CoerceCaretIndex(AvaloniaObject sender, int value)
         /// </summary>
         public void Clear() => SetCurrentValue(TextProperty, string.Empty);
 
-        private void MoveHorizontal(int direction, bool wholeWord, bool isSelecting)
+        private void MoveHorizontal(int direction, bool wholeWord, bool isSelecting, bool moveCaretPosition)
         {
             if (_presenter == null)
             {
@@ -1836,10 +1836,13 @@ private void MoveHorizontal(int direction, bool wholeWord, bool isSelecting)
                 }
 
                 SetCurrentValue(SelectionEndProperty, SelectionEnd + offset);
+                
+                if (moveCaretPosition)
+                {
+                    _presenter.MoveCaretToTextPosition(SelectionEnd);
+                }
 
-                _presenter.MoveCaretToTextPosition(SelectionEnd);
-
-                if (!isSelecting)
+                if (!isSelecting && moveCaretPosition)
                 {
                     SetCurrentValue(CaretIndexProperty, SelectionEnd);
                 }
@@ -2069,7 +2072,7 @@ private void SetSelectionForControlBackspace()
             var text = Text ?? string.Empty;
             var selectionStart = CaretIndex;
 
-            MoveHorizontal(-1, true, false);
+            MoveHorizontal(-1, true, false, false);
             
             if (SelectionEnd > 0 && 
                 selectionStart < text.Length && text[selectionStart] == ' ')
@@ -2090,7 +2093,7 @@ private void SetSelectionForControlDelete()
 
             SetCurrentValue(SelectionStartProperty, CaretIndex);
 
-            MoveHorizontal(1, true, true);
+            MoveHorizontal(1, true, true, false);
 
             if (SelectionEnd < textLength && Text![SelectionEnd] == ' ')
             {