diff --git a/src/popupwin.c b/src/popupwin.c
index 9465008..64309ff 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -151,7 +151,7 @@
 /*
  * Adjust the position and size of the popup to fit on the screen.
  */
-    static void
+    void
 popup_adjust_position(win_T *wp)
 {
     linenr_T	lnum;
@@ -209,6 +209,8 @@
 	wp->w_height = wp->w_maxheight;
     if (wp->w_height > Rows - wp->w_winrow)
 	wp->w_height = Rows - wp->w_winrow;
+
+    wp->w_popup_last_changedtick = CHANGEDTICK(wp->w_buffer);
 }
 
 /*
diff --git a/src/proto/popupwin.pro b/src/proto/popupwin.pro
index 37b5273..83b5f2c 100644
--- a/src/proto/popupwin.pro
+++ b/src/proto/popupwin.pro
@@ -1,13 +1,14 @@
 /* popupwin.c */
+void popup_adjust_position(win_T *wp);
 void f_popup_create(typval_T *argvars, typval_T *rettv);
 int popup_any_visible(void);
 void f_popup_close(typval_T *argvars, typval_T *rettv);
 void f_popup_hide(typval_T *argvars, typval_T *rettv);
-void f_popup_getposition(typval_T *argvars, typval_T *rettv);
 void f_popup_show(typval_T *argvars, typval_T *rettv);
 void popup_close(int id);
 void popup_close_tabpage(tabpage_T *tp, int id);
 void close_all_popups(void);
 void ex_popupclear(exarg_T *eap);
 void f_popup_move(typval_T *argvars, typval_T *rettv);
+void f_popup_getposition(typval_T *argvars, typval_T *rettv);
 /* vim: set ft=c : */
diff --git a/src/screen.c b/src/screen.c
index de0833a..5f3947b 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1030,6 +1030,12 @@
 
 	if (lowest_wp == NULL)
 	    break;
+
+	// Recompute the position if the text changed.
+	if (lowest_wp->w_popup_last_changedtick
+					   != CHANGEDTICK(lowest_wp->w_buffer))
+	    popup_adjust_position(lowest_wp);
+
 	win_update(lowest_wp);
 	lowest_wp->w_popup_flags |= POPF_REDRAWN;
     }
@@ -2119,6 +2125,9 @@
 		    && wp->w_lines[idx].wl_lnum == lnum
 		    && lnum > wp->w_topline
 		    && !(dy_flags & (DY_LASTLINE | DY_TRUNCATE))
+#ifdef FEAT_TEXT_PROP
+		    && !bt_popup(wp->w_buffer)
+#endif
 		    && srow + wp->w_lines[idx].wl_size > wp->w_height
 #ifdef FEAT_DIFF
 		    && diff_check_fill(wp, lnum) == 0
@@ -2274,6 +2283,13 @@
 	    wp->w_filler_rows = wp->w_height - srow;
 	}
 #endif
+#ifdef FEAT_TEXT_PROP
+	else if (bt_popup(wp->w_buffer))
+	{
+	    // popup line that doesn't fit is left as-is
+	    wp->w_botline = lnum;
+	}
+#endif
 	else if (dy_flags & DY_TRUNCATE)	/* 'display' has "truncate" */
 	{
 	    int scr_row = W_WINROW(wp) + wp->w_height - 1;
@@ -2334,7 +2350,11 @@
 
 	// Make sure the rest of the screen is blank
 	// put '~'s on rows that aren't part of the file.
-	win_draw_end(wp, '~', ' ', FALSE, row, wp->w_height, HLF_EOB);
+	win_draw_end(wp,
+#ifdef FEAT_TEXT_PROP
+		bt_popup(wp->w_buffer) ? ' ' :
+#endif
+				  '~', ' ', FALSE, row, wp->w_height, HLF_EOB);
     }
 
 #ifdef SYN_TIME_LIMIT
diff --git a/src/structs.h b/src/structs.h
index 79681cc..9f63949 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2881,6 +2881,8 @@
     int		w_maxwidth;	    // "maxwidth" for popup window
     int		w_wantline;	    // "line" for popup window
     int		w_wantcol;	    // "col" for popup window
+    varnumber_T	w_popup_last_changedtick; // b:changedtick when position was
+					  // computed
 # if defined(FEAT_TIMERS)
     timer_T	*w_popup_timer;	    // timer for closing popup window
 # endif
diff --git a/src/testdir/dumps/Test_popupwin_05.dump b/src/testdir/dumps/Test_popupwin_05.dump
index bfb50f0..2c74d74 100644
--- a/src/testdir/dumps/Test_popupwin_05.dump
+++ b/src/testdir/dumps/Test_popupwin_05.dump
@@ -3,7 +3,7 @@
 |~| @73
 |~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @5| +0#4040ff13#ffffff0@51
 |~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| | +0#4040ff13#ffffff0@51
-|~| @6|~+0&#ffd7ff255| @13| +0&#ffffff0@51
+|~| @6| +0&#ffd7ff255@14| +0&#ffffff0@51
 |~| @73
 |~| @73
 |~| @73
diff --git a/src/testdir/dumps/Test_popupwin_06.dump b/src/testdir/dumps/Test_popupwin_06.dump
new file mode 100644
index 0000000..3dfcbc2
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_06.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @15| +0#4040ff13#ffffff0@41
+|~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @10| +0#4040ff13#ffffff0@41
+|~| @6|t+0#0000001#ffd7ff255|h|i|s| |l|i|n|e| |w|i|l@1| |n|o|t| |f|i|t| |h|e| +0#4040ff13#ffffff0@41
+|~| @73
+|~| @73
+|~| @73
+|:+0#0000000&|r|e|d|r|a|w| @49|0|,|0|-|1| @8|A|l@1| 
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index a2d2e80..4511cd1 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -41,11 +41,16 @@
   call term_sendkeys(buf, ":quit!\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_04', {})
 
-  " resize popup
+  " resize popup, show empty line at bottom
   call term_sendkeys(buf, ":call popup_move(popupwin, {'minwidth': 15, 'maxwidth': 25, 'minheight': 3, 'maxheight': 5})\<CR>")
   call term_sendkeys(buf, ":redraw\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_05', {})
 
+  " show not fitting line at bottom
+  call term_sendkeys(buf, ":call setbufline(winbufnr(popupwin), 3, 'this line will not fit here')\<CR>")
+  call term_sendkeys(buf, ":redraw\<CR>")
+  call VerifyScreenDump(buf, 'Test_popupwin_06', {})
+
   " clean up
   call StopVimInTerminal(buf)
   call delete('XtestPopup')
diff --git a/src/version.c b/src/version.c
index 00eaacb..ca48793 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1421,
+/**/
     1420,
 /**/
     1419,
