diff --git a/ChangeLog b/ChangeLog
index ab3c0e9bdc81159860b4e7ee91e58cd543d84a93..d0a90e72d6315fc631c2443bd8af0a0a71871595 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
 	Fixes https://bugs.launchpad.net/ubuntu/+source/nano/+bug/1300565
 	requested by Rolf Leggewie.
 	* src/search.c (do_replace_loop): Adjust some whitespace and wrapping.
+	* src/search.c (do_replace_loop): Place a call to edit_refresh better,
+	and remove two unneeded ones.  This greatly speeds up nano when doing
+	a Replace All with *lots* of occurrences.
 
 2015-03-25  Benno Schulenberg  <bensberg@justemail.net>
 	* doc/syntax/debian.nanorc: Slightly widen and relax the header regex.
diff --git a/src/search.c b/src/search.c
index 48f3e9b731779a781e4fbf98dd69dcaf7a004423..104f823def6d27e7e48e8161e2f8ebc767a13033 100644
--- a/src/search.c
+++ b/src/search.c
@@ -748,9 +748,6 @@ ssize_t do_replace_loop(
 	}
 #endif
 
-	if (!replaceall)
-	    edit_refresh();
-
 	/* Indicate that we found the search string. */
 	if (numreplaced == -1)
 	    numreplaced = 0;
@@ -761,6 +758,8 @@ ssize_t do_replace_loop(
 		xpt, strnlenpt(openfile->current->data,
 		openfile->current_x + match_len) - xpt, FALSE);
 
+	    edit_refresh();
+
 	    curs_set(0);
 
 	    do_replace_highlight(TRUE, exp_word);
@@ -850,7 +849,6 @@ ssize_t do_replace_loop(
 #ifndef DISABLE_COLOR
 	    reset_multis(openfile->current, TRUE);
 #endif
-	    edit_refresh();
 
 	    if (!replaceall) {
 #ifndef DISABLE_COLOR
@@ -877,7 +875,6 @@ ssize_t do_replace_loop(
 	unpartition_filestruct(&filepart);
 	openfile->edittop = edittop_save;
 	openfile->mark_set = TRUE;
-	edit_refresh();
     }
 #endif