diff --git a/src/move.c b/src/move.c
index b982f222173167056af71cfa62baddd2589ab35b..e2953c1d0636ff1aeafee9532892e00d7ce336ad 100644
--- a/src/move.c
+++ b/src/move.c
@@ -52,7 +52,7 @@ void do_last_line(void)
     openfile->current = openfile->filebot;
     openfile->current_x = 0;
     openfile->placewewant = 0;
-    openfile->current_y = editwinrows / 2;
+    openfile->current_y = editwinrows - 1;
 
     edit_redraw(current_save, pww_save);
 }
diff --git a/src/winio.c b/src/winio.c
index 119e55044515cd3c2f64ebd60cb928da9f09df6f..4132a190a40abc0dadbfaa6047a803f059d96329 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -3560,11 +3560,12 @@ 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 scrolled up, we couldn't scroll up all nlines lines, and
-     * we're now at the top of the file, we need to draw the entire edit
+    /* 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 (direction == UP && i > 0 && openfile->edittop ==
-	openfile->fileage)
+    if (i > 0 && ((direction == UP && openfile->edittop ==
+	openfile->fileage) || (direction == DOWN && openfile->current ==
+	openfile->filebot)))
 	nlines = editwinrows;
 
     /* If the scrolled region contains only one line, and the line