diff --git a/src/move.c b/src/move.c
index 4414ee6adbbeeac8a662eca818d35359990df263..94d9511ca2110e8c7334e6f2a0ebf3c1dc1e5b28 100644
--- a/src/move.c
+++ b/src/move.c
@@ -488,14 +488,12 @@ void do_up(bool scroll_only)
 	edit_scroll(UPWARD, (ISSET(SMOOTH_SCROLL) || scroll_only) ?
 				1 : editwinrows / 2 + 1);
 
-    /* If the lines weren't already redrawn, see if they need to be. */
     if (openfile->current_y > 0) {
-	/* Redraw the prior line if it's not actually the same line as the
-	 * current one (which it might be in softwrap mode, if we moved just
-         * one chunk) and the line was horizontally scrolled. */
-	if (openfile->current != was_current
-		&& (!scroll_only || openfile->current_y < editwinrows - 1)
-		&& line_needs_update(was_column, 0))
+	/* Redraw the prior line if it's not offscreen, and it's not the same
+	 * line as the current one, and the line was horizontally scrolled. */
+	if ((!scroll_only || openfile->current_y < editwinrows - 1) &&
+			openfile->current != was_current &&
+			line_needs_update(was_column, 0))
 	    update_line(openfile->current->next, 0);
 	/* Redraw the current line if it needs to be horizontally scrolled. */
 	if (line_needs_update(0, xplustabs()))
@@ -545,14 +543,12 @@ void do_down(bool scroll_only)
 	edit_scroll(DOWNWARD, (ISSET(SMOOTH_SCROLL) || scroll_only) ?
 				1 : editwinrows / 2 + 1);
 
-    /* If the lines weren't already redrawn, see if they need to be. */
     if (openfile->current_y < editwinrows - 1) {
-	/* Redraw the prior line if it's not actually the same line as the
-	 * current one (which it might be in softwrap mode, if we moved just
-         * one chunk) and the line was horizontally scrolled. */
-	if (openfile->current != was_current &&
-		(!scroll_only || openfile->current_y > 0) &&
-		line_needs_update(was_column, 0))
+	/* Redraw the prior line if it's not offscreen, and it's not the same
+	 * line as the current one, and the line was horizontally scrolled. */
+	if ((!scroll_only || openfile->current_y > 0) &&
+			openfile->current != was_current &&
+			line_needs_update(was_column, 0))
 	    update_line(openfile->current->prev, 0);
 	/* Redraw the current line if it needs to be horizontally scrolled. */
 	if (line_needs_update(0, xplustabs()))