diff --git a/src/popupmenu.c b/src/popupmenu.c
index 6d91c33..fb32017 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -658,25 +658,22 @@
 	width = cells + over_cell + 1;
 	rt = orig_rt;
 
-	screen_putchar(truncrl, row,
-		col - width + 1 + TPL_LCOL(NULL), trunc_attr);
+	screen_putchar(truncrl, row, col - width + 1, trunc_attr);
 
 	if (over_cell > 0)
-	    screen_fill(row, row + 1, col - width + 2 + TPL_LCOL(NULL),
-		    col - width + 2 + over_cell + TPL_LCOL(NULL), ' ', ' ',
-		    attr);
+	    screen_fill(row, row + 1, col - width + 2,
+		    col - width + 2 + over_cell, ' ', ' ', attr);
     }
 
     if (attrs == NULL)
-	screen_puts_len(rt, (int)STRLEN(rt), row,
-		col - cells + 1 + TPL_LCOL(NULL), attr);
+	screen_puts_len(rt, (int)STRLEN(rt), row, col - cells + 1, attr);
     else
-	pum_screen_puts_with_attrs(row, col - cells + 1 + TPL_LCOL(NULL),
-		cells, rt, (int)STRLEN(rt), attrs);
+	pum_screen_puts_with_attrs(row, col - cells + 1, cells, rt,
+		(int)STRLEN(rt), attrs);
 
     vim_free(rt_start);
     VIM_CLEAR(st);
-    return col - width + TPL_LCOL(NULL);
+    return col - width;
 }
 #endif
 
@@ -750,19 +747,17 @@
     }
 
     if (attrs == NULL)
-	screen_puts_len(st, size, row, col + TPL_LCOL(NULL), attr);
+	screen_puts_len(st, size, row, col, attr);
     else
-	pum_screen_puts_with_attrs(row, col + TPL_LCOL(NULL), cells, st, size,
-		attrs);
+	pum_screen_puts_with_attrs(row, col, cells, st, size, attrs);
 
     if (truncated)
     {
 	if (over_cell > 0)
-	    screen_fill(row, row + 1, col + cells + TPL_LCOL(NULL),
-		    col + cells + over_cell + TPL_LCOL(NULL), ' ', ' ', attr);
+	    screen_fill(row, row + 1, col + cells,
+		    col + cells + over_cell, ' ', ' ', attr);
 
-	screen_putchar(trunc, row,
-		col + cells + over_cell + TPL_LCOL(NULL), trunc_attr);
+	screen_putchar(trunc, row, col + cells + over_cell, trunc_attr);
     }
 
     VIM_CLEAR(st);
@@ -873,10 +868,10 @@
 
 #ifdef FEAT_RIGHTLEFT
     if (pum_rl)
-	screen_putchar(' ', row, pum_col - pum_width + TPL_LCOL(NULL), attr);
+	screen_putchar(' ', row, pum_col - pum_width, attr);
     else
 #endif
-	screen_putchar(' ', row, pum_col + pum_width + TPL_LCOL(NULL), attr);
+	screen_putchar(' ', row, pum_col + pum_width, attr);
 }
 
 /*
@@ -959,12 +954,12 @@
 	if (pum_rl)
 	{
 	    if (pum_col < curwin->w_wincol + curwin->w_width - 1)
-		screen_putchar(' ', row, pum_col + 1 + TPL_LCOL(NULL), attr);
+		screen_putchar(' ', row, pum_col + 1, attr);
 	}
 	else
 #endif
 	    if (pum_col > 0)
-		screen_putchar(' ', row, pum_col - 1 + TPL_LCOL(NULL), attr);
+		screen_putchar(' ', row, pum_col - 1, attr);
 
 	// Display each entry, use two spaces for a Tab.
 	// Do this 3 times and order from p_cia
@@ -1005,16 +1000,15 @@
 #ifdef FEAT_RIGHTLEFT
 	    if (pum_rl)
 	    {
-		screen_fill(row, row + 1, pum_col - basic_width - n + 1 + TPL_LCOL(NULL),
-						col + 1 + TPL_LCOL(NULL), ' ', ' ', orig_attr);
+		screen_fill(row, row + 1, pum_col - basic_width - n + 1,
+						col + 1, ' ', ' ', orig_attr);
 		col = pum_col - basic_width - n;
 	    }
 	    else
 #endif
 	    {
-		screen_fill(row, row + 1, col + TPL_LCOL(NULL),
-			pum_col + basic_width + n + TPL_LCOL(NULL), ' ', ' ',
-			orig_attr);
+		screen_fill(row, row + 1, col, pum_col + basic_width + n,
+							' ', ' ', orig_attr);
 		col = pum_col + basic_width + n;
 	    }
 	    totwidth = basic_width + n;
@@ -1022,14 +1016,12 @@
 
 #ifdef FEAT_RIGHTLEFT
 	if (pum_rl)
-	    screen_fill(row, row + 1,
-		    pum_col - pum_width + 1 + TPL_LCOL(NULL),
-		    col + 1 + TPL_LCOL(NULL), ' ', ' ', orig_attr);
+	    screen_fill(row, row + 1, pum_col - pum_width + 1, col + 1, ' ',
+							    ' ', orig_attr);
 	else
 #endif
-	    screen_fill(row, row + 1, col + TPL_LCOL(NULL),
-		    pum_col + pum_width + TPL_LCOL(NULL),
-		    ' ', ' ', orig_attr);
+	    screen_fill(row, row + 1, col, pum_col + pum_width, ' ', ' ',
+								orig_attr);
 	pum_draw_scrollbar(row, i, thumb_pos, thumb_height);
 
 	++row;
