diff --git a/src/popupwin.c b/src/popupwin.c
index 5f882fb..df0cda8 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2337,6 +2337,7 @@
     int	    border_char[8];
     char_u  buf[MB_MAXBYTES];
     int	    row;
+    int	    wincol;
     int	    padcol = 0;
     int	    padwidth = 0;
     int	    i;
@@ -2409,21 +2410,21 @@
 		border_attr[i] = syn_name2attr(wp->w_border_highlight[i]);
 	}
 
+	wincol = wp->w_wincol - wp->w_popup_leftoff;
 	top_padding = wp->w_popup_padding[0];
 	if (wp->w_popup_border[0] > 0)
 	{
 	    // top border
 	    screen_fill(wp->w_winrow, wp->w_winrow + 1,
-		    wp->w_wincol,
-		    wp->w_wincol + total_width,
-		    wp->w_popup_border[3] != 0
+		    wincol < 0 ? 0 : wincol, wincol + total_width,
+		    wp->w_popup_border[3] != 0 && wp->w_popup_leftoff == 0
 					     ? border_char[4] : border_char[0],
 		    border_char[0], border_attr[0]);
-	    if (wp->w_popup_border[1] > 0)
+	    if (wp->w_popup_border[1] > 0 && wp->w_popup_rightoff == 0)
 	    {
 		buf[mb_char2bytes(border_char[5], buf)] = NUL;
 		screen_puts(buf, wp->w_winrow,
-			       wp->w_wincol + total_width - 1, border_attr[1]);
+			       wincol + total_width - 1, border_attr[1]);
 	    }
 	}
 	else if (wp->w_popup_padding[0] == 0 && popup_top_extra(wp) > 0)
@@ -2431,7 +2432,7 @@
 
 	if (top_padding > 0 || wp->w_popup_padding[2] > 0)
 	{
-	    padcol = wp->w_wincol - wp->w_popup_leftoff + wp->w_popup_border[3];
+	    padcol = wincol + wp->w_popup_border[3];
 	    padwidth = wp->w_wincol + total_width - wp->w_popup_border[1]
 							 - wp->w_has_scrollbar;
 	    if (padcol < 0)
@@ -2479,7 +2480,6 @@
 				 i < total_height - wp->w_popup_border[2]; ++i)
 	{
 	    int	pad_left;
-	    int col = wp->w_wincol - wp->w_popup_leftoff;
 	    // left and right padding only needed next to the body
 	    int do_padding =
 		    i >= wp->w_popup_border[0] + wp->w_popup_padding[0]
@@ -2489,15 +2489,16 @@
 	    row = wp->w_winrow + i;
 
 	    // left border
-	    if (wp->w_popup_border[3] > 0 && col >= 0)
+	    if (wp->w_popup_border[3] > 0 && wincol >= 0)
 	    {
 		buf[mb_char2bytes(border_char[3], buf)] = NUL;
-		screen_puts(buf, row, col, border_attr[3]);
+		screen_puts(buf, row, wincol, border_attr[3]);
 	    }
 	    if (do_padding && wp->w_popup_padding[3] > 0)
 	    {
+		int col = wincol + wp->w_popup_border[3];
+
 		// left padding
-		col += wp->w_popup_border[3];
 		pad_left = wp->w_popup_padding[3];
 		if (col < 0)
 		{
@@ -2526,14 +2527,12 @@
 	    if (wp->w_popup_border[1] > 0)
 	    {
 		buf[mb_char2bytes(border_char[1], buf)] = NUL;
-		screen_puts(buf, row,
-			       wp->w_wincol + total_width - 1, border_attr[1]);
+		screen_puts(buf, row, wincol + total_width - 1, border_attr[1]);
 	    }
 	    // right padding
 	    if (do_padding && wp->w_popup_padding[1] > 0)
 		screen_puts(get_spaces(wp->w_popup_padding[1]), row,
-			wp->w_wincol - wp->w_popup_leftoff
-			+ wp->w_popup_border[3]
+			wincol + wp->w_popup_border[3]
 			+ wp->w_popup_padding[3] + wp->w_width + wp->w_leftcol,
 			popup_attr);
 	}
@@ -2552,16 +2551,15 @@
 	    // bottom border
 	    row = wp->w_winrow + total_height - 1;
 	    screen_fill(row , row + 1,
-		    wp->w_wincol,
-		    wp->w_wincol + total_width,
-		    wp->w_popup_border[3] != 0
+		    wincol < 0 ? 0 : wincol,
+		    wincol + total_width,
+		    wp->w_popup_border[3] != 0 && wp->w_popup_leftoff == 0
 					     ? border_char[7] : border_char[2],
 		    border_char[2], border_attr[2]);
 	    if (wp->w_popup_border[1] > 0)
 	    {
 		buf[mb_char2bytes(border_char[6], buf)] = NUL;
-		screen_puts(buf, row,
-			       wp->w_wincol + total_width - 1, border_attr[2]);
+		screen_puts(buf, row, wincol + total_width - 1, border_attr[2]);
 	    }
 	}
 
@@ -2569,7 +2567,7 @@
 	{
 	    // close button goes on top of anything at the top-right corner
 	    buf[mb_char2bytes('X', buf)] = NUL;
-	    screen_puts(buf, wp->w_winrow, wp->w_wincol + total_width - 1,
+	    screen_puts(buf, wp->w_winrow, wincol + total_width - 1,
 		      wp->w_popup_border[0] > 0 ? border_attr[0] : popup_attr);
 	}
 
