diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py
index b1c0ecfb04ea77499ebbc27533f38e6b2e869bf8..2033425236836ecf000d6c341c46dcb8b087a29a 100644
--- a/loopy/kernel/tools.py
+++ b/loopy/kernel/tools.py
@@ -1341,17 +1341,30 @@ def draw_dependencies_as_unicode_arrows(
 
     uniform_length = min(n_columns[0], max_columns)
 
+    added_ellipsis = [False]
+
     def conform_to_uniform_length(s):
         if len(s) <= uniform_length:
-            return s + " "*(uniform_length+1-len(s))
+            return s + " "*(uniform_length-len(s))
         else:
+            added_ellipsis[0] = True
             return s[:uniform_length] + u"…"
 
-    return [
+    rows = [
             (conform_to_uniform_length(row),
                 conform_to_uniform_length(extender))
             for row, extender in rows]
 
+    if added_ellipsis[0]:
+        uniform_length += 1
+
+    rows = [
+            (conform_to_uniform_length(row),
+                conform_to_uniform_length(extender))
+            for row, extender in rows]
+
+    return rows
+
 # }}}
 
 # vim: foldmethod=marker