diff --git a/src/winio.c b/src/winio.c
index d11655ad201c2af97c112329348d4abf4ae508ab..6ebe97cb21ef308b179c4e28454958c1e99a81d6 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -3560,12 +3560,11 @@ void edit_scroll(scroll_dir direction, ssize_t nlines)
     /* Part 2: nlines is the number of lines in the scrolled region of
      * the edit window that we need to draw. */
 
-    /* If we couldn't scroll up or down all nlines lines, and we're now
-     * at the top or bottom of the file, we need to draw the entire edit
-     * window. */
-    if (i > 0 && ((direction == UP && openfile->edittop ==
-	openfile->fileage) || (direction == DOWN && openfile->current ==
-	openfile->filebot)))
+    /* If the top or bottom line of the file is now visible in the edit
+     * window, we need to draw the entire edit window. */
+    if ((direction == UP && openfile->edittop == openfile->fileage) ||
+	(direction == DOWN && openfile->edittop->lineno + editwinrows -
+	1 >= openfile->filebot->lineno))
 	nlines = editwinrows;
 
     /* If the scrolled region contains only one line, and the line