diff --git a/ChangeLog b/ChangeLog
index 622a763faaf02f57b3cea157b8f2fd0b5a52f9e3..abc65feaebfc9e5cb7f0e1c34e36e684c0c2b813 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-03  Benno Schulenberg  <bensberg@justemail.net>
+	* src/text.c (do_deletion), src/nano.c (do_input): Let reset_multis()
+	figure out whether after a deletion a full refresh is needed, before
+	doing a redraw of the current line.  This fixes Savannah bug #46794.
+
 2016-01-02  Benno Schulenberg  <bensberg@justemail.net>
 	* src/text.c (do_spell, do_formatter): Plug three tiny memory leaks.
 	* src/text.c (do_alt_speller, do_formatter): There is no need here to
diff --git a/src/nano.c b/src/nano.c
index 07607467f52b8d28befef870dfea4695610245be..e7af9b067ac9363de2583fde1bd46941065c4592 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1738,7 +1738,8 @@ int do_input(bool allow_funcs)
 #endif
 			    edit_refresh();
 			    edit_refresh_needed = FALSE;
-			}
+			} else if (s->scfunc == do_delete || s->scfunc == do_backspace)
+			    update_line(openfile->current, openfile->current_x);
 		    }
 		}
 	    }
diff --git a/src/text.c b/src/text.c
index c8313ef4dbee6850382d69bcda4ef746ff036218..75a4f016666d8afdc785b2dcb9751bd088049b7a 100644
--- a/src/text.c
+++ b/src/text.c
@@ -161,9 +161,6 @@ void do_deletion(undo_type action)
 #endif
 
     set_modified();
-
-    if (edit_refresh_needed == FALSE)
-	update_line(openfile->current, openfile->current_x);
 }
 
 /* Delete the character under the cursor. */