diff --git a/src/popupwin.c b/src/popupwin.c
index 7fb9792..0667200 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -542,8 +542,15 @@
 {
     if (wp->w_cursor.lnum < wp->w_topline)
 	wp->w_topline = wp->w_cursor.lnum;
-    else if (wp->w_cursor.lnum >= wp->w_botline)
+    else if (wp->w_cursor.lnum >= wp->w_botline
+					  && (curwin->w_valid & VALID_BOTLINE))
+    {
 	wp->w_topline = wp->w_cursor.lnum - wp->w_height + 1;
+	if (wp->w_topline < 1)
+	    wp->w_topline = 1;
+	else if (wp->w_topline > wp->w_buffer->b_ml.ml_line_count)
+	    wp->w_topline = wp->w_buffer->b_ml.ml_line_count;
+    }
 
     // Don't use "firstline" now.
     wp->w_firstline = 0;
@@ -593,6 +600,7 @@
     }
     else
 	sign_undefine_by_name(sign_name, FALSE);
+    wp->w_popup_last_curline = wp->w_cursor.lnum;
 }
 
 /*
@@ -1059,6 +1067,11 @@
     wp->w_popup_leftoff = 0;
     wp->w_popup_rightoff = 0;
 
+    // May need to update the "cursorline" highlighting, which may also change
+    // "topline"
+    if (wp->w_popup_last_curline != wp->w_cursor.lnum)
+	popup_highlight_curline(wp);
+
     // If no line was specified default to vertical centering.
     if (wantline == 0)
 	center_vert = TRUE;
@@ -1159,7 +1172,9 @@
     // start at the desired first line
     if (wp->w_firstline > 0)
 	wp->w_topline = wp->w_firstline;
-    if (wp->w_topline > wp->w_buffer->b_ml.ml_line_count)
+    if (wp->w_topline < 1)
+	wp->w_topline = 1;
+    else if (wp->w_topline > wp->w_buffer->b_ml.ml_line_count)
 	wp->w_topline = wp->w_buffer->b_ml.ml_line_count;
 
     // Compute width based on longest text line and the 'wrap' option.
@@ -2998,6 +3013,7 @@
  * Return TRUE if popup_adjust_position() needs to be called for "wp".
  * That is when the buffer in the popup was changed, or the popup is following
  * a textprop and the referenced buffer was changed.
+ * Or when the cursor line changed and "cursorline" is set.
  */
     static int
 popup_need_position_adjust(win_T *wp)
@@ -3007,7 +3023,9 @@
     if (win_valid(wp->w_popup_prop_win))
 	return wp->w_popup_prop_changedtick
 				!= CHANGEDTICK(wp->w_popup_prop_win->w_buffer)
-		|| wp->w_popup_prop_topline != wp->w_popup_prop_win->w_topline;
+		|| wp->w_popup_prop_topline != wp->w_popup_prop_win->w_topline
+		|| ((wp->w_popup_flags & POPF_CURSORLINE)
+			&& wp->w_cursor.lnum != wp->w_popup_last_curline);
     return FALSE;
 }
 
diff --git a/src/structs.h b/src/structs.h
index ce618b9..0e61f87 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -3050,6 +3050,8 @@
     int		w_popup_prop_topline; // w_topline of window with
 				      // w_popup_prop_type when position was
 				      // computed
+    linenr_T	w_popup_last_curline; // last known w_cursor.lnum of window
+				      // with "cursorline" set
     callback_T	w_close_cb;	    // popup close callback
     callback_T	w_filter_cb;	    // popup filter callback
     int		w_filter_mode;	    // mode when filter callback is used
diff --git a/src/testdir/dumps/Test_popupwin_cursorline_7.dump b/src/testdir/dumps/Test_popupwin_cursorline_7.dump
new file mode 100644
index 0000000..15eb0be
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_cursorline_7.dump
@@ -0,0 +1,10 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @34|1+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35
+|~| @34|2+0#0000001#e0e0e08@2| +0#4040ff13#ffffff0@35
+|~| @34|3+0#0000001#ffd7ff255@2| +0#4040ff13#ffffff0@35
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|0|,|0|-|1| @8|A|l@1| 
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index cbfc7d2..a338169 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2306,6 +2306,20 @@
   call term_sendkeys(buf, "x")
   call StopVimInTerminal(buf)
 
+  " ---------
+  " Cursor in second line when creating the popup
+  " ---------
+  let lines =<< trim END
+    let winid = popup_create(['111', '222', '333'], #{
+	  \ cursorline : 1,
+	  \ })
+    call win_execute(winid, "2")
+  END
+  call writefile(lines, 'XtestPopupCursorLine')
+  let buf = RunVimInTerminal('-S XtestPopupCursorLine', #{rows: 10})
+  call VerifyScreenDump(buf, 'Test_popupwin_cursorline_7', {})
+  call StopVimInTerminal(buf)
+
   call delete('XtestPopupCursorLine')
 endfunc
 
diff --git a/src/version.c b/src/version.c
index b797a59..6f8855a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2009,
+/**/
     2008,
 /**/
     2007,
