diff --git a/src/popupmenu.c b/src/popupmenu.c
index ceb72b4..f908bfc 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -36,8 +36,13 @@
 static int pum_win_wcol;
 static int pum_win_width;
 
-static int pum_do_redraw = FALSE;	// do redraw anyway
-static int pum_skip_redraw = FALSE;	// skip redraw
+// Some parts are not updated when a popup menu is visible.  Setting this flag
+// makes pum_visible() return FALSE even when there is a popup menu.
+static int pum_pretend_not_visible = FALSE;
+
+// When set the popup menu will redraw soon using the pum_win_ values. Do not
+// draw over the poup menu area to avoid flicker.
+static int pum_will_redraw = FALSE;
 
 static int pum_set_selected(int n, int repeat);
 
@@ -377,7 +382,7 @@
     int
 pum_under_menu(int row, int col)
 {
-    return pum_skip_redraw
+    return pum_will_redraw
 	    && row >= pum_row
 	    && row < pum_row + pum_height
 	    && col >= pum_col - 1
@@ -410,9 +415,11 @@
     if (call_update_screen)
     {
 	call_update_screen = FALSE;
-	pum_skip_redraw = TRUE;  // do not redraw in pum_may_redraw().
+	// Do not redraw in pum_may_redraw() and don't draw in the area where
+	// the popup menu will be.
+	pum_will_redraw = TRUE;
 	update_screen(0);
-	pum_skip_redraw = FALSE;
+	pum_will_redraw = FALSE;
     }
 
     // never display more than we have
@@ -916,9 +923,13 @@
 
 			// Update the screen before drawing the popup menu.
 			// Enable updating the status lines.
-			pum_do_redraw = TRUE;
+			pum_pretend_not_visible = TRUE;
+			// But don't draw text at the new popup menu position,
+			// it causes flicker.
+			pum_will_redraw = TRUE;
 			update_screen(0);
-			pum_do_redraw = FALSE;
+			pum_pretend_not_visible = FALSE;
+			pum_will_redraw = FALSE;
 
 			if (!resized && win_valid(curwin_save))
 			{
@@ -936,9 +947,11 @@
 
 			// May need to update the screen again when there are
 			// autocommands involved.
-			pum_do_redraw = TRUE;
+			pum_pretend_not_visible = TRUE;
+			pum_will_redraw = TRUE;
 			update_screen(0);
-			pum_do_redraw = FALSE;
+			pum_pretend_not_visible = FALSE;
+			pum_will_redraw = FALSE;
 			call_update_screen = FALSE;
 		    }
 		}
@@ -990,13 +1003,14 @@
 }
 
 /*
- * Return TRUE if the popup menu is displayed.
- * Overruled when "pum_do_redraw" is set, used to redraw the status lines.
+ * Return TRUE if the popup menu is displayed. Used to avoid some redrawing
+ * that could overwrite it.  Overruled when "pum_pretend_not_visible" is set,
+ * used to redraw the status lines.
  */
     int
 pum_visible(void)
 {
-    return !pum_do_redraw && pum_array != NULL;
+    return !pum_pretend_not_visible && pum_array != NULL;
 }
 
 /*
@@ -1009,7 +1023,7 @@
     int		len = pum_size;
     int		selected = pum_selected;
 
-    if (!pum_visible() || pum_skip_redraw)
+    if (!pum_visible() || pum_will_redraw)
 	return;  // nothing to do
 
     if (pum_window != curwin
