 
       continue unless @gutterIsVisible(gutter)
       for decorationId, {properties, screenRange} of @customGutterDecorationsByGutterName[gutterName]
+        top = @linesYardstick.topPixelPositionForRow(screenRange.start.row)
+        bottom = @linesYardstick.topPixelPositionForRow(screenRange.end.row + 1)
         @customGutterDecorations[gutterName][decorationId] =
-          top: @lineHeight * screenRange.start.row
-          height: @lineHeight * screenRange.getRowCount()
+          top: top
+          height: bottom - top
           item: properties.item
           class: properties.class
 


  restoreScrollTopIfNeeded: ->
    unless @scrollTop?
      @updateScrollTop(@model.getFirstVisibleScreenRow() * @lineHeight)

  restoreScrollLeftIfNeeded: ->
    unless @scrollLeft?

    @emitDidUpdateState()

  didChangeFirstVisibleScreenRow: (screenRow) ->
    @updateScrollTop(@linesYardstick.topPixelPositionForRow(screenRow))

  getVerticalScrollMarginInPixels: ->
    Math.round(@model.getVerticalScrollMargin() * @lineHeight)
