diff --git a/src/popupmenu.c b/src/popupmenu.c
index 18f248033..a16b43fb8 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -156,11 +156,17 @@ pum_display(
        {
            // pum above "pum_win_row"
 
-           // Leave two lines of context if possible
-           if (curwin->w_wrow - curwin->w_cline_row >= 2)
-               context_lines = 2;
+           if (State == CMDLINE)
+               // for cmdline pum, no need for context lines
+               context_lines = 0;
            else
-               context_lines = curwin->w_wrow - curwin->w_cline_row;
+           {
+               // Leave two lines of context if possible
+               if (curwin->w_wrow - curwin->w_cline_row >= 2)
+                   context_lines = 2;
+               else
+                   context_lines = curwin->w_wrow - curwin->w_cline_row;
+           }
 
            if (pum_win_row >= size + context_lines)
            {
@@ -182,14 +188,20 @@ pum_display(
        {
            // pum below "pum_win_row"
 
-           // Leave two lines of context if possible
-           validate_cheight();
-           if (curwin->w_cline_row
-                               + curwin->w_cline_height - curwin->w_wrow >= 3)
-               context_lines = 3;
+           if (State == CMDLINE)
+               // for cmdline pum, no need for context lines
+               context_lines = 0;
            else
-               context_lines = curwin->w_cline_row
-                                   + curwin->w_cline_height - curwin->w_wrow;
+           {
+               // Leave two lines of context if possible
+               validate_cheight();
+               if (curwin->w_cline_row
+                       + curwin->w_cline_height - curwin->w_wrow >= 3)
+                   context_lines = 3;
+               else
+                   context_lines = curwin->w_cline_row
+                       + curwin->w_cline_height - curwin->w_wrow;
+           }
 
            pum_row = pum_win_row + context_lines;
            if (size > below_row - pum_row)
