diff --git a/src/change.c b/src/change.c
index 8bb61ed..c0b8785 100644
--- a/src/change.c
+++ b/src/change.c
@@ -568,8 +568,8 @@
 			    && wp->w_topline < lnume
 			    && win_linetabsize(wp, wp->w_topline,
 					ml_get(wp->w_topline), (colnr_T)MAXCOL)
-				    <= wp->w_skipcol + (wp->w_p_list
-					    && wp->w_lcs_chars.prec ? 1 : 3))))
+				    <= wp->w_skipcol + sms_marker_overlap(wp,
+					win_col_off(wp) - win_col_off2(wp)))))
 		wp->w_skipcol = 0;
 
 	    // Check if a change in the buffer has invalidated the cached
diff --git a/src/move.c b/src/move.c
index 8775607..d969de2 100644
--- a/src/move.c
+++ b/src/move.c
@@ -202,22 +202,26 @@
 #endif
 
 /*
- * Calculates how much overlap the smoothscroll marker "<<<" overlaps with
- * buffer text for curwin.
+ * Calculates how much the 'listchars' "precedes" or 'smoothscroll' "<<<"
+ * marker overlaps with buffer text for window "wp".
  * Parameter "extra2" should be the padding on the 2nd line, not the first
  * line.
  * Returns the number of columns of overlap with buffer text, excluding the
  * extra padding on the ledge.
  */
-    static int
-smoothscroll_marker_overlap(int extra2)
+     int
+sms_marker_overlap(win_T *wp, int extra2)
 {
 #if defined(FEAT_LINEBREAK)
-    // We don't draw the <<< marker when in showbreak mode, thus no need to
+    // There is no marker overlap when in showbreak mode, thus no need to
     // account for it.  See wlv_screen_line().
-    if (*get_showbreak_value(curwin) != NUL)
+    if (*get_showbreak_value(wp) != NUL)
 	return 0;
 #endif
+    // Overlap when 'list' and 'listchars' "precedes" are set is 1.
+    if (wp->w_p_list && wp->w_lcs_chars.prec)
+	return 1;
+
     return extra2 > 3 ? 0 : 3 - extra2;
 }
 
@@ -346,12 +350,11 @@
 		colnr_T vcol;
 
 		// Check that the cursor position is visible.  Add columns for
-		// the smoothscroll marker "<<<" displayed in the top-left if
-		// needed.
+		// the marker displayed in the top-left if needed.
 		getvvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
-		int smoothscroll_overlap = smoothscroll_marker_overlap(
-					 curwin_col_off() - curwin_col_off2());
-		if (curwin->w_skipcol + smoothscroll_overlap > vcol)
+		int overlap = sms_marker_overlap(curwin, curwin_col_off()
+							- curwin_col_off2());
+		if (curwin->w_skipcol + overlap > vcol)
 		    check_topline = TRUE;
 	    }
 	}
@@ -1883,10 +1886,10 @@
 	int	scrolloff_cols = so == 0 ? 0 : width1 + (so - 1) * width2;
 	int	space_cols = (curwin->w_height - 1) * width2;
 
-	// If we have non-zero scrolloff, just ignore the <<< marker as we are
+	// If we have non-zero scrolloff, just ignore the marker as we are
 	// going past it anyway.
-	int smoothscroll_overlap = scrolloff_cols != 0 ? 0 :
-					   smoothscroll_marker_overlap(extra2);
+	int overlap = scrolloff_cols != 0 ? 0
+					  : sms_marker_overlap(curwin, extra2);
 
 	// Make sure the cursor is in a visible part of the line, taking
 	// 'scrolloff' into account, but using screen lines.
@@ -1894,15 +1897,13 @@
 	if (scrolloff_cols > space_cols / 2)
 	    scrolloff_cols = space_cols / 2;
 	validate_virtcol();
-	if (curwin->w_virtcol < curwin->w_skipcol
-				       + smoothscroll_overlap + scrolloff_cols)
+	if (curwin->w_virtcol < curwin->w_skipcol + overlap + scrolloff_cols)
 	{
 	    colnr_T col = curwin->w_virtcol;
 
 	    if (col < width1)
 		col += width1;
-	    while (col < curwin->w_skipcol
-				       + smoothscroll_overlap + scrolloff_cols)
+	    while (col < curwin->w_skipcol + overlap + scrolloff_cols)
 		col += width2;
 	    curwin->w_curswant = col;
 	    coladvance(curwin->w_curswant);
@@ -1949,8 +1950,10 @@
     }
 
     validate_virtcol();
+    int overlap = sms_marker_overlap(curwin,
+					 curwin_col_off() - curwin_col_off2());
     while (curwin->w_skipcol > 0
-		 && curwin->w_virtcol < curwin->w_skipcol + 3 + scrolloff_cols)
+	    && curwin->w_virtcol < curwin->w_skipcol + overlap + scrolloff_cols)
     {
 	// scroll a screen line down
 	if (curwin->w_skipcol >= width1 + width2)
diff --git a/src/proto/move.pro b/src/proto/move.pro
index 1fe46a3..75f1544 100644
--- a/src/proto/move.pro
+++ b/src/proto/move.pro
@@ -1,6 +1,7 @@
 /* move.c */
 int adjust_plines_for_skipcol(win_T *wp, int n);
 void redraw_for_cursorline(win_T *wp);
+int sms_marker_overlap(win_T *wp, int extra2);
 void update_topline_redraw(void);
 void update_topline(void);
 void update_curswant_force(void);
diff --git a/src/testdir/test_scroll_opt.vim b/src/testdir/test_scroll_opt.vim
index 0bdf684..636e7b7 100644
--- a/src/testdir/test_scroll_opt.vim
+++ b/src/testdir/test_scroll_opt.vim
@@ -426,8 +426,7 @@
 
   " Test moving the cursor behind the <<< display with 'virtualedit'
   set virtualedit=all
-  exe "normal \<C-E>"
-  norm 3lgkh
+  exe "normal \<C-E>3lgkh"
   call s:check_col_calc(3, 2, 23)
   set virtualedit&
 
@@ -499,6 +498,16 @@
   call s:check_col_calc(1, 3, 37)
   normal gg
 
+  " Test list + listchars "precedes", where there is always 1 overlap
+  " regardless of number and cpo-=n.
+  setl number list listchars=precedes:< cpo-=n
+  call s:check_col_calc(5, 1, 1)
+  exe "normal 2|\<C-E>"
+  call s:check_col_calc(6, 1, 18)
+  norm h
+  call s:check_col_calc(5, 2, 17)
+  normal gg
+
   bwipe!
 endfunc
 
diff --git a/src/version.c b/src/version.c
index 923ea97..cc7c4e1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1551,
+/**/
     1550,
 /**/
     1549,
