diff --git a/ChangeLog b/ChangeLog
index 51caf1050a3fd7009ffda14d300babfaa8163621..f49804cd7ede89b18f94848773f3ef3e32a9ded6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -237,6 +237,10 @@ CVS code -
 	- Add Ctrl-/ as an alias for Ctrl-_. (DLR, found by Benno
 	  Schulenberg)
 	- Simplify the if blocks wherever possible. (DLR)
+  display_string()
+	- Properly display double-column characters if they're past the
+	  first virtual page and their first column is covered by the
+	  "$" displayed at the beginning of the line. (DLR)
   edit_draw()
 	- Properly ignore zero-length regexes in multi-line regexes as
 	  well as single-line ones.  This avoids a segfault when trying
diff --git a/src/winio.c b/src/winio.c
index cceadb93de47fa7fc2322fab8c4eb0098296c95a..c6a404c29b4dbe1fdaf35d41181135b19224a7bc 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -1810,7 +1810,12 @@ char *display_string(const char *buf, size_t start_col, size_t len, bool
 	    }
 	}
 #ifdef ENABLE_UTF8
-	else if (using_utf8() && mbwidth(buf_mb) > 1) {
+	else if (using_utf8() && mbwidth(buf_mb) == 2) {
+	    if (column >= start_col) {
+		converted[index++] = ' ';
+		start_col++;
+	    }
+
 	    converted[index++] = ' ';
 	    start_col++;