diff --git a/src/popupmnu.c b/src/popupmnu.c
index 929ab06..f82683c 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -745,6 +745,7 @@
 		if (use_popup)
 		{
 		    int col = pum_col + pum_width + 1;
+		    int row = pum_row + pum_selected - pum_first + 1;
 
 		    if (Columns - col < 20 && Columns - col < pum_col)
 		    {
@@ -755,8 +756,8 @@
 		    else
 			curwin->w_maxwidth = Columns - col + 1;
 		    curwin->w_maxwidth -= popup_extra_width(curwin);
-		    popup_set_wantpos_rowcol(curwin,
-				      pum_row + pum_selected - pum_first, col);
+		    row -= popup_top_extra(curwin);
+		    popup_set_wantpos_rowcol(curwin, row, col);
 		}
 # endif
 		if (!resized
diff --git a/src/popupwin.c b/src/popupwin.c
index 99a40af..a803faa 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -935,7 +935,7 @@
 /*
  * Get the padding plus border at the top, adjusted to 1 if there is a title.
  */
-    static int
+    int
 popup_top_extra(win_T *wp)
 {
     int	extra = wp->w_popup_border[0] + wp->w_popup_padding[0];
@@ -1350,6 +1350,24 @@
 		*p = c;
 	    }
 	}
+	else if (STRNCMP(s, "border:", 7) == 0)
+	{
+	    char_u	*arg = s + 7;
+	    int		on = STRNCMP(arg, "on", 2) == 0 && arg + 2 == p;
+	    int		off = STRNCMP(arg, "off", 3) == 0 && arg + 3 == p;
+	    int		i;
+
+	    if (!on && !off)
+		return FAIL;
+	    if (wp != NULL)
+	    {
+		for (i = 0; i < 4; ++i)
+		    wp->w_popup_border[i] = on ? 1 : 0;
+		if (off)
+		    // only show the X for close when there is a border
+		    wp->w_popup_close = POPCLOSE_NONE;
+	    }
+	}
 	else
 	    return FAIL;
     }
diff --git a/src/proto/popupwin.pro b/src/proto/popupwin.pro
index f320443..9f6d433 100644
--- a/src/proto/popupwin.pro
+++ b/src/proto/popupwin.pro
@@ -6,6 +6,7 @@
 void popup_set_firstline(win_T *wp);
 int popup_is_in_scrollbar(win_T *wp, int row, int col);
 void popup_handle_scrollbar_click(win_T *wp, int row, int col);
+int popup_top_extra(win_T *wp);
 int popup_height(win_T *wp);
 int popup_width(win_T *wp);
 int popup_extra_width(win_T *wp);
diff --git a/src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump b/src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump
new file mode 100644
index 0000000..41208ee
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump
@@ -0,0 +1,14 @@
+|t+0&#ffffff0|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|e|x|t| |t|a|w|o|r|d> @43
+|~+0#4040ff13&| @23| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| @1|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0#4040ff13#ffffff0@11
+|~| @23| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27
+|~| @23| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27
+|~| @23| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#4040ff13#ffffff0@27
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26
diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim
index 3c182ea..a8eca74 100644
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/gen_opt_test.vim
@@ -78,7 +78,7 @@
       \ 'complete': [['', 'w,b'], ['xxx']],
       \ 'concealcursor': [['', 'n', 'nvic'], ['xxx']],
       \ 'completeopt': [['', 'menu', 'menu,longest'], ['xxx', 'menu,,,longest,']],
-      \ 'completepopup': [['', 'height:13', 'highlight:That', 'width:10,height:234,highlight:Mine'], ['height:yes', 'width:no', 'xxx', 'xxx:99']],
+      \ 'completepopup': [['', 'height:13', 'highlight:That', 'width:10,height:234,highlight:Mine'], ['height:yes', 'width:no', 'xxx', 'xxx:99', 'border:maybe', 'border:1']],
       \ 'completeslash': [['', 'slash', 'backslash'], ['xxx']],
       \ 'cryptmethod': [['', 'zip'], ['xxx']],
       \ 'cscopequickfix': [['', 's-', 's-,c+,e0'], ['xxx', 's,g,d']],
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 15a61f9..98522b7 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2193,14 +2193,11 @@
   call delete('Xheader.h')
 endfunc
 
-func Test_popupmenu_info()
-  CheckScreendump
-
+func Get_popupmenu_lines()
   let lines =<< trim END
       set completeopt+=preview,popup
       set completefunc=CompleteFuncDict
       hi InfoPopup ctermbg=yellow
-      set completepopup=height:4,highlight:InfoPopup
 
       func CompleteFuncDict(findstart, base)
 	if a:findstart
@@ -2249,7 +2246,16 @@
       endfunc
       call setline(1, 'text text text text text text text ')
   END
+  return lines
+endfunc
+
+func Test_popupmenu_info_border()
+  CheckScreendump
+
+  let lines = Get_popupmenu_lines()
+  call add(lines, 'set completepopup=height:4,highlight:InfoPopup')
   call writefile(lines, 'XtestInfoPopup')
+
   let buf = RunVimInTerminal('-S XtestInfoPopup', #{rows: 14})
   call term_wait(buf, 50)
 
@@ -2269,4 +2275,21 @@
   call delete('XtestInfoPopup')
 endfunc
 
+func Test_popupmenu_info_noborder()
+  CheckScreendump
+
+  let lines = Get_popupmenu_lines()
+  call add(lines, 'set completepopup=height:4,border:off')
+  call writefile(lines, 'XtestInfoPopupNb')
+
+  let buf = RunVimInTerminal('-S XtestInfoPopupNb', #{rows: 14})
+  call term_wait(buf, 50)
+
+  call term_sendkeys(buf, "A\<C-X>\<C-U>")
+  call VerifyScreenDump(buf, 'Test_popupwin_infopopup_nb_1', {})
+
+  call StopVimInTerminal(buf)
+  call delete('XtestInfoPopupNb')
+endfunc
+
 " vim: shiftwidth=2 sts=2
diff --git a/src/version.c b/src/version.c
index b23da40..0b15d71 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1902,
+/**/
     1901,
 /**/
     1900,
