diff --git a/src/move.c b/src/move.c
index 139ee17..613791e 100644
--- a/src/move.c
+++ b/src/move.c
@@ -1602,6 +1602,27 @@
 #endif
 	coladvance(curwin->w_curswant);
     }
+
+    if (curwin->w_cursor.lnum == curwin->w_topline && do_sms)
+    {
+	// make sure the cursor is in the visible text
+	validate_virtcol();
+	int col = curwin->w_virtcol - curwin->w_skipcol;
+	int row = 0;
+	if (col >= width1)
+	{
+	    col -= width1;
+	    ++row;
+	}
+	if (col > width2)
+	{
+	    row += col / width2;
+	    col = col % width2;
+	}
+	if (row >= curwin->w_height)
+	    coladvance(curwin->w_virtcol
+				      - (row - curwin->w_height + 1) * width2);
+    }
 }
 
 /*
@@ -1651,8 +1672,7 @@
 		    // for a closed fold: go to the last line in the fold
 		    (void)hasFolding(lnum, NULL, &lnum);
 # endif
-		if (lnum == curwin->w_topline
-					&& curwin->w_p_wrap && curwin->w_p_sms)
+		if (lnum == curwin->w_topline && do_sms)
 		{
 		    // 'smoothscroll': increase "w_skipcol" until it goes over
 		    // the end of the line, then advance to the next line.
@@ -1725,6 +1745,24 @@
 	      ~(VALID_WROW|VALID_WCOL|VALID_CHEIGHT|VALID_CROW|VALID_VIRTCOL);
 	coladvance(curwin->w_curswant);
     }
+    if (curwin->w_cursor.lnum == curwin->w_topline
+					    && do_sms && curwin->w_skipcol > 0)
+    {
+	// make sure the cursor is in a visible part of the line
+	validate_virtcol();
+	if (curwin->w_virtcol < curwin->w_skipcol + 3)
+	{
+	    int	    width1 = curwin->w_width - curwin_col_off();
+	    int	    width2 = width1 + curwin_col_off2();
+	    colnr_T col = curwin->w_virtcol;
+
+	    if (col < width1)
+		col += width1;
+	    while (col < curwin->w_skipcol + 3)
+		col += width2;
+	    coladvance(col);
+	}
+    }
 }
 
 #ifdef FEAT_DIFF
