diff --git a/src/popupwin.c b/src/popupwin.c
index 95a91f9..9222119 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -300,10 +300,10 @@
     win_T *wp;
 
     for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
-	if ((wp->w_popup_flags & PFL_HIDDEN) == 0)
+	if ((wp->w_popup_flags & POPF_HIDDEN) == 0)
 	    return TRUE;
     for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
-	if ((wp->w_popup_flags & PFL_HIDDEN) == 0)
+	if ((wp->w_popup_flags & POPF_HIDDEN) == 0)
 	    return TRUE;
     return FALSE;
 }
@@ -328,9 +328,9 @@
     int		id = (int)tv_get_number(argvars);
     win_T	*wp = find_popup_win(id);
 
-    if (wp != NULL && (wp->w_popup_flags & PFL_HIDDEN) == 0)
+    if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) == 0)
     {
-	wp->w_popup_flags |= PFL_HIDDEN;
+	wp->w_popup_flags |= POPF_HIDDEN;
 	redraw_all_later(NOT_VALID);
     }
 }
@@ -344,9 +344,9 @@
     int		id = (int)tv_get_number(argvars);
     win_T	*wp = find_popup_win(id);
 
-    if (wp != NULL && (wp->w_popup_flags & PFL_HIDDEN) != 0)
+    if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) != 0)
     {
-	wp->w_popup_flags &= ~PFL_HIDDEN;
+	wp->w_popup_flags &= ~POPF_HIDDEN;
 	redraw_all_later(NOT_VALID);
     }
 }
diff --git a/src/screen.c b/src/screen.c
index 7354220..02cd172 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -999,9 +999,9 @@
 
     // Reset all the VALID_POPUP flags.
     for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
-	wp->w_popup_flags &= ~PFL_REDRAWN;
+	wp->w_popup_flags &= ~POPF_REDRAWN;
     for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
-	wp->w_popup_flags &= ~PFL_REDRAWN;
+	wp->w_popup_flags &= ~POPF_REDRAWN;
 
     // TODO: don't redraw every popup every time.
     for (;;)
@@ -1012,14 +1012,14 @@
 	lowest_zindex = INT_MAX;
 	lowest_wp = NULL;
 	for (wp = first_popupwin; wp != NULL; wp = wp->w_next)
-	    if ((wp->w_popup_flags & (PFL_REDRAWN|PFL_HIDDEN)) == 0
+	    if ((wp->w_popup_flags & (POPF_REDRAWN|POPF_HIDDEN)) == 0
 					       && wp->w_zindex < lowest_zindex)
 	    {
 		lowest_zindex = wp->w_zindex;
 		lowest_wp = wp;
 	    }
 	for (wp = curtab->tp_first_popupwin; wp != NULL; wp = wp->w_next)
-	    if ((wp->w_popup_flags & (PFL_REDRAWN|PFL_HIDDEN)) == 0
+	    if ((wp->w_popup_flags & (POPF_REDRAWN|POPF_HIDDEN)) == 0
 					       && wp->w_zindex < lowest_zindex)
 	    {
 		lowest_zindex = wp->w_zindex;
@@ -1029,7 +1029,7 @@
 	if (lowest_wp == NULL)
 	    break;
 	win_update(lowest_wp);
-	lowest_wp->w_popup_flags |= PFL_REDRAWN;
+	lowest_wp->w_popup_flags |= POPF_REDRAWN;
     }
 }
 #endif
diff --git a/src/version.c b/src/version.c
index a208d32..5345a5f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1408,
+/**/
     1407,
 /**/
     1406,
diff --git a/src/vim.h b/src/vim.h
index a52ba5e..42a415a 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -614,8 +614,8 @@
 #define VALID_TOPLINE	0x80	// w_topline is valid (for cursor position)
 
 // Values for w_popup_flags.
-#define PFL_HIDDEN	1	// popup is not displayed
-#define PFL_REDRAWN	2	// popup was just redrawn
+#define POPF_HIDDEN	1	// popup is not displayed
+#define POPF_REDRAWN	2	// popup was just redrawn
 
 /*
  * Terminal highlighting attribute bits.
