diff --git a/src/drawline.c b/src/drawline.c
index 789893b..e91ef29 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -779,7 +779,7 @@
 	    trailcol = (colnr_T)STRLEN(ptr);
 	    while (trailcol > (colnr_T)0 && VIM_ISWHITE(ptr[trailcol - 1]))
 		--trailcol;
-	    trailcol += (colnr_T) (ptr - line);
+	    trailcol += (colnr_T)(ptr - line);
 	}
 	// find end of leading whitespace
 	if (wp->w_lcs_chars.lead || wp->w_lcs_chars.leadmultispace != NULL)
@@ -792,7 +792,7 @@
 		leadcol = (colnr_T)0;
 	    else
 		// keep track of the first column not filled with spaces
-		leadcol += (colnr_T) (ptr - line) + 1;
+		leadcol += (colnr_T)(ptr - line) + 1;
 	}
     }
 
@@ -1027,12 +1027,14 @@
     // Repeat for the whole displayed line.
     for (;;)
     {
+	char_u	*prev_ptr = ptr;
 #if defined(FEAT_CONCEAL) || defined(FEAT_SEARCH_EXTRA)
-	int has_match_conc = 0;	// match wants to conceal
+	int	has_match_conc = 0;	// match wants to conceal
 #endif
 #ifdef FEAT_CONCEAL
-	int did_decrement_ptr = FALSE;
+	int	did_decrement_ptr = FALSE;
 #endif
+
 	// Skip this quickly when working on the text.
 	if (draw_state != WL_LINE)
 	{
@@ -1392,6 +1394,7 @@
 				      &match_conc, did_line_attr, lcs_eol_one,
 				      &on_last_col);
 		ptr = line + v;  // "line" may have been changed
+		prev_ptr = ptr;
 
 		// Do not allow a conceal over EOL otherwise EOL will be missed
 		// and bad things happen.
@@ -1553,6 +1556,7 @@
 		    // have made it invalid.
 		    line = ml_get_buf(wp->w_buffer, lnum, FALSE);
 		    ptr = line + v;
+		    prev_ptr = ptr;
 # ifdef FEAT_CONCEAL
 		    // no concealing past the end of the line, it interferes
 		    // with line highlighting
@@ -1733,9 +1737,10 @@
 	else
 	{
 #ifdef FEAT_LINEBREAK
-	    int c0;
+	    int		c0;
 #endif
 	    VIM_CLEAR(p_extra_free);
+	    prev_ptr = ptr;
 
 	    // Get a character from the line itself.
 	    c = *ptr;
@@ -1942,17 +1947,12 @@
 # endif
 				can_spell))
 		    {
-			char_u	*prev_ptr, *p;
+			char_u	*p;
 			int	len;
 			hlf_T	spell_hlf = HLF_COUNT;
 
 			if (has_mbyte)
-			{
-			    prev_ptr = ptr - mb_l;
 			    v -= mb_l - 1;
-			}
-			else
-			    prev_ptr = ptr - 1;
 
 			// Use nextline[] if possible, it has the start of the
 			// next line concatenated.
@@ -2771,6 +2771,7 @@
 		}
 #endif
 		ScreenAttrs[off] = char_attr;
+		ScreenCols[off] = MAXCOL;
 #ifdef FEAT_RIGHTLEFT
 		if (wp->w_p_rl)
 		{
@@ -2839,6 +2840,7 @@
 		    ScreenLines[off] = ' ';
 		    if (enc_utf8)
 			ScreenLinesUC[off] = 0;
+		    ScreenCols[off] = MAXCOL;
 		    ++col;
 		    if (draw_color_col)
 			draw_color_col = advance_color_col(VCOL_HLC,
@@ -2992,6 +2994,8 @@
 	    else
 		ScreenAttrs[off] = char_attr;
 
+	    ScreenCols[off] = (colnr_T)(prev_ptr - line);
+
 	    if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
 	    {
 		// Need to fill two screen columns.
@@ -3013,6 +3017,9 @@
 		// the character, otherwise highlighting won't stop.
 		if (tocol == vcol)
 		    ++tocol;
+
+		ScreenCols[off] = (colnr_T)(prev_ptr - line);
+
 #ifdef FEAT_RIGHTLEFT
 		if (wp->w_p_rl)
 		{
