diff --git a/src/screen.c b/src/screen.c
index f5dfa05..ffea593 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -420,6 +420,27 @@
 }
 
 /*
+ * Return TRUE if the character at "row" / "col" is under the popup menu and it
+ * will be redrawn soon or it is under another popup.
+ */
+    static int
+skip_for_popup(int row, int col)
+{
+    // Popup windows with zindex higher than POPUPMENU_ZINDEX go on top.
+    if (pum_under_menu(row, col, TRUE)
+#ifdef FEAT_PROP_POPUP
+	    && screen_zindex <= POPUPMENU_ZINDEX
+#endif
+	    )
+	return TRUE;
+#ifdef FEAT_PROP_POPUP
+    if (blocked_by_popup(row, col))
+	return TRUE;
+#endif
+    return FALSE;
+}
+
+/*
  * Move one "cooked" screen line to the screen, but only the characters that
  * have actually changed.  Handle insert/delete character.
  * "coloff" gives the first column on the screen for this line.
@@ -538,10 +559,10 @@
 		redraw_this = TRUE;
 	}
 #endif
-#ifdef FEAT_PROP_POPUP
-	if (blocked_by_popup(row, col + coloff))
+	// Do not redraw if under the popup menu.
+	if (redraw_this && skip_for_popup(row, col + coloff))
 	    redraw_this = FALSE;
-#endif
+
 	if (redraw_this)
 	{
 	    /*
@@ -669,15 +690,11 @@
 	    }
 #endif
 	    ScreenAttrs[off_to] = ScreenAttrs[off_from];
-	    ScreenCols[off_to] = ScreenCols[off_from];
 
 	    // For simplicity set the attributes of second half of a
 	    // double-wide character equal to the first half.
 	    if (char_cells == 2)
-	    {
 		ScreenAttrs[off_to + 1] = ScreenAttrs[off_from];
-		ScreenCols[off_to + 1] = ScreenCols[off_from + 1];
-	    }
 
 	    if (enc_dbcs != 0 && char_cells == 2)
 		screen_char_2(off_to, row, col + coloff);
@@ -2165,17 +2182,8 @@
 	return;
 
     // Skip if under the popup menu.
-    // Popup windows with zindex higher than POPUPMENU_ZINDEX go on top.
-    if (pum_under_menu(row, col, TRUE)
-#ifdef FEAT_PROP_POPUP
-	    && screen_zindex <= POPUPMENU_ZINDEX
-#endif
-	    )
+    if (skip_for_popup(row, col))
 	return;
-#ifdef FEAT_PROP_POPUP
-    if (blocked_by_popup(row, col))
-	return;
-#endif
 
     // Outputting a character in the last cell on the screen may scroll the
     // screen up.  Only do it when the "xn" termcap property is set, otherwise
