diff --git a/ChangeLog b/ChangeLog
index 7c86e3a1fc428fe16acfc51c7c598402a45e2e52..7fd4872ecc04be655b1aa14246d7591af08a1009 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
 	one byte but one character (possibly multibyte).  Fixes Savannah
 	bug #42175, reported by myself, and the finding of ghosts seen in
 	https://lists.gnu.org/archive/html/nano-devel/2015-03/msg00055.html.
+	* src/winio.c (edit_redraw): Do not center the current line when
+	smooth scrolling is used.  This fixes Savannah bug #42654.
 
 2015-03-21  Benno Schulenberg  <bensberg@justemail.net>
 	* src/text.c (do_alt_speller): Remove some leftovers.
diff --git a/src/winio.c b/src/winio.c
index c578640ce11d23404b4692d7eb5855569aa53d6f..3dbc1d05a6ece3f6251769abb7b152add305438e 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -3160,10 +3160,11 @@ void edit_redraw(filestruct *old_current, size_t pww_save)
 	}
 #endif /* !NANO_TINY */
 
-	/* Put edittop in range of current, get the difference in lines
-	 * between the original edittop and the current edittop, and
-	 * then restore the original edittop. */
-	edit_update(CENTER);
+	/* Make sure the current line is on the screen. */
+	if (ISSET(SMOOTH_SCROLL))
+	    edit_update(NONE);
+	else
+	    edit_update(CENTER);
 
 	/* Update old_current if we're not on the same page as
 	 * before. */
@@ -3229,8 +3230,7 @@ void edit_refresh(void)
 		(long)openfile->current->lineno, (long)openfile->edittop->lineno, maxrows);
 #endif
 
-	/* Put the top line of the edit window in range of the current
-	 * line. */
+	/* Make sure the current line is on the screen. */
 	edit_update(CENTER);
     }