diff --git a/ChangeLog b/ChangeLog
index 9b3fc4d90fd5ef4c786ab5ab7aeb36d292fc2380..63b82c321728136a124452a1b2067f94bdceaa56 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -158,6 +158,12 @@ CVS code -
 	  nano.texi, and nanorc.sample. (DLR, suggested by Mike
 	  Frysinger)
 	- Update email address.  Changes to faq.html and AUTHORS. (DLR)
+	- Remove do_(left|right)()'s ability to optionally not update
+	  the current line, as this was only used in do_backspace(), and
+	  it didn't always update the screen properly.  Changes to
+	  shortcut_init(), do_left(), do_right(), and do_backspace();
+	  removal of do_left_void() and do_right_void(). (DLR; problem
+	  found by Mike Frysinger)
 - color.c:
 	- Remove unneeded fcntl.h include. (DLR)
 - chars.c:
diff --git a/src/global.c b/src/global.c
index 7465e0e718149451dc805b64dd2941106163524e..56835bd5a5a8c6976da16cc86d436f5653aa2af4 100644
--- a/src/global.c
+++ b/src/global.c
@@ -497,11 +497,11 @@ void shortcut_init(bool unjustify)
 
     sc_init_one(&main_list, NANO_FORWARD_KEY, N_("Forward"),
 	IFHELP(nano_forward_msg, NANO_NO_KEY), NANO_NO_KEY,
-	NANO_NO_KEY, VIEW, do_right_void);
+	NANO_NO_KEY, VIEW, do_right);
 
     sc_init_one(&main_list, NANO_BACK_KEY, N_("Back"),
 	IFHELP(nano_back_msg, NANO_NO_KEY), NANO_NO_KEY,
-	NANO_NO_KEY, VIEW, do_left_void);
+	NANO_NO_KEY, VIEW, do_left);
 
     sc_init_one(&main_list, NANO_HOME_KEY, N_("Home"),
 	IFHELP(nano_home_msg, NANO_NO_KEY), NANO_NO_KEY,
diff --git a/src/move.c b/src/move.c
index e2953c1d0636ff1aeafee9532892e00d7ce336ad..ae432999dcdc96978573aa0b929997b12fc64dc5 100644
--- a/src/move.c
+++ b/src/move.c
@@ -550,7 +550,7 @@ void do_down(void)
     }
 }
 
-void do_left(bool allow_update)
+void do_left(void)
 {
     size_t pww_save = openfile->placewewant;
 
@@ -566,16 +566,11 @@ void do_left(bool allow_update)
 
     openfile->placewewant = xplustabs();
 
-    if (allow_update && need_horizontal_update(pww_save))
+    if (need_horizontal_update(pww_save))
 	update_line(openfile->current, openfile->current_x);
 }
 
-void do_left_void(void)
-{
-    do_left(TRUE);
-}
-
-void do_right(bool allow_update)
+void do_right(void)
 {
     size_t pww_save = openfile->placewewant;
 
@@ -593,11 +588,6 @@ void do_right(bool allow_update)
 
     openfile->placewewant = xplustabs();
 
-    if (allow_update && need_horizontal_update(pww_save))
+    if (need_horizontal_update(pww_save))
 	update_line(openfile->current, openfile->current_x);
 }
-
-void do_right_void(void)
-{
-    do_right(TRUE);
-}
diff --git a/src/proto.h b/src/proto.h
index 3b05394e878e6f02ad89a7994ff3d6b71144115a..dfc9ba16ecf50fab938a18d790969f135c14c862 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -334,10 +334,8 @@ void do_home(void);
 void do_end(void);
 void do_up(void);
 void do_down(void);
-void do_left(bool allow_update);
-void do_left_void(void);
-void do_right(bool allow_update);
-void do_right_void(void);
+void do_left(void);
+void do_right(void);
 
 /* Public functions in nano.c. */
 filestruct *make_new_node(filestruct *prevnode);
diff --git a/src/text.c b/src/text.c
index 6fcd19f2161e3a4ae4e27df741ebfce9f3943e9a..4744e2585ebef2a11689140e4aff17b4b36bc288 100644
--- a/src/text.c
+++ b/src/text.c
@@ -153,7 +153,7 @@ void do_backspace(void)
 {
     if (openfile->current != openfile->fileage ||
 	openfile->current_x > 0) {
-	do_left(FALSE);
+	do_left();
 	do_delete();
     }
 }