diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index dd796580..c4322de0 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -282,16 +282,28 @@ impl EditorView {
                 Range::new(start, end)
             };
 
+            let mode = doc.mode();
             let base_cursor_style = theme
                 .try_get("ui.cursor")
                 .unwrap_or_else(|| Style::default().add_modifier(Modifier::REVERSED));
-            let cursor_style = match doc.mode() {
+            let cursor_style = match mode {
                 Mode::Insert => theme.try_get("ui.cursor.insert"),
                 Mode::Select => theme.try_get("ui.cursor.select"),
                 Mode::Normal => Some(base_cursor_style),
             }
             .unwrap_or(base_cursor_style);
-            let primary_cursor_style = theme.try_get("ui.cursor.primary").unwrap_or(cursor_style);
+            let primary_cursor_style = theme
+                .try_get("ui.cursor.primary")
+                .map(|style| {
+                    if mode != Mode::Normal {
+                        // we want to make sure that the insert and select highlights
+                        // also affect the primary cursor if set
+                        style.patch(cursor_style)
+                    } else {
+                        style
+                    }
+                })
+                .unwrap_or(cursor_style);
 
             let selection_style = theme.get("ui.selection");
             let primary_selection_style = theme