diff --git a/src/vte.c b/src/vte.c
index d72f316..b10814e 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -13249,6 +13249,17 @@ update_repeat_timeout (gpointer data)
 		again = FALSE;
 	}
 
+	/* Reinstall the timer.  Don't let the existing one repeat, we need
+	 * to delay by the time it took to repaint the screen: bug 730732. */
+	if (again) {
+		update_timeout_tag =
+			g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE,
+					    VTE_UPDATE_REPEAT_TIMEOUT,
+					    update_repeat_timeout, NULL,
+					    NULL);
+	} else {
+		update_timeout_tag = 0;
+	}
 	in_update_timeout = FALSE;
 
         G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
@@ -13265,7 +13276,7 @@ update_repeat_timeout (gpointer data)
 		prune_chunks (10);
 	}
 
-	return again;
+	return FALSE;  /* "again" was handled above */
 }
 
 static gboolean
