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;
 }
 
