diff --git a/helix-core/src/movement.rs b/helix-core/src/movement.rs
index ed71b02a..a1de95bd 100644
--- a/helix-core/src/movement.rs
+++ b/helix-core/src/movement.rs
@@ -128,8 +128,7 @@ pub fn move_prev_word_start(slice: RopeSlice, mut begin: usize, count: usize) ->
         }
     }
 
-    // we want to include begin
-    Some(Range::new(begin + 1, if with_end { end } else { end + 1 }))
+    Some(Range::new(begin, if with_end { end } else { end + 1 }))
 }
 
 pub fn move_next_word_end(slice: RopeSlice, mut begin: usize, count: usize) -> Option<Range> {
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index 1317a5e7..67f5cf84 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -233,19 +233,8 @@ impl EditorView {
                 // TODO: render also if only one of the ranges is in viewport
                 let mut start = view.screen_coords_at_pos(doc, text, selection.anchor);
                 let mut end = view.screen_coords_at_pos(doc, text, selection.head);
-
-                // cursor
-                if let Some(end) = end {
-                    surface.set_style(
-                        Rect::new(
-                            viewport.x + end.col as u16,
-                            viewport.y + end.row as u16,
-                            1,
-                            1,
-                        ),
-                        cursor_style,
-                    );
-                }
+                   
+                let head = end;
 
                 if selection.head < selection.anchor {
                     std::mem::swap(&mut start, &mut end);
@@ -260,7 +249,7 @@ impl EditorView {
                         Rect::new(
                             viewport.x + start.col as u16,
                             viewport.y + start.row as u16,
-                            (end.col - start.col) as u16,
+                            (end.col - start.col) as u16 + 1,
                             1,
                         ),
                         selection_style,
@@ -293,6 +282,19 @@ impl EditorView {
                         selection_style,
                     );
                 }
+                    
+                // cursor
+                if let Some(head) = head {
+                    surface.set_style(
+                        Rect::new(
+                            viewport.x + head.col as u16,
+                            viewport.y + head.row as u16,
+                            1,
+                            1,
+                        ),
+                        cursor_style,
+                    );
+                }
             }
         }