             void: true
           }
         })
+        screenColumn += eolInvisibleReplacement.length
 
       while @showIndentGuides and indentGuidesCount > 0 and not previousPositionWasFold
-        distanceToNextTabStop = @tabLength - (tokensScreenExtent % @tabLength)
+        distanceToNextTabStop = @tabLength - (screenColumn % @tabLength)
         tokens.push({
-          screenExtent: 0,
+          screenExtent: distanceToNextTabStop,
           bufferExtent: Point(0, 0),
           metadata: {
-            showIndentGuide: (tokensScreenExtent % @tabLength is 0),
+            showIndentGuide: (screenColumn % @tabLength is 0),
             void: true
           }
         })
+        screenColumn += distanceToNextTabStop
         indentGuidesCount--
 
       if tokens.length is 0


    metadata = @spatialTokenIterator.getMetadata()
    if metadata?.void
      throw new Error('TODO: Not implemented. Support void tokens followed by valid screen positions, such as soft wrap indents.')
    else if comparePoints(screenPosition, @spatialTokenIterator.getScreenEnd()) <= 0
      if (metadata?.atomic and
          comparePoints(screenPosition, @spatialTokenIterator.getScreenStart()) > 0 and


      if eolInvisibleReplacement = @eolInvisibles[@buffer.lineEndingForRow(bufferRow)]
        tokens.push({
          screenExtent: eolInvisibleReplacement.length,
          bufferExtent: Point(0, 0),
          metadata: {
            eol: eolInvisibleReplacement,
