diff --git a/src/winio.c b/src/winio.c
index a7007e598cd238b6042ae554759e3798630018f3..7d86081ef5b1b9a8906f1d68d2f3eb36edaa617c 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -2470,7 +2470,13 @@ char *display_string(const char *buf, size_t start_col, size_t len, bool
 	start_index += wide_buf_len;
     }
 
+    if (index < alloc_len)
+	converted[index] = '\0';
+
+    /* Make sure converted takes up no more than len columns. */
+    index = actual_x(converted, len);
     null_at(&converted, index);
+
     return converted;
 }