 
     @emitter.emit 'did-update-state'
 
-  updateLineDecorationCaches: (decoration, range) ->
+  removeFromLineDecorationCaches: (decoration, range) ->
+    for row in [range.start.row..range.end.row] by 1
+      delete @lineDecorationsByScreenRow[row]?[decoration.id]
+      delete @lineNumberDecorationsByScreenRow[row]?[decoration.id]
+
+  addToLineDecorationCaches: (decoration, range) ->
     marker = decoration.getMarker()
     properties = decoration.getProperties()
 

      range = @model.getMarker(markerId).getScreenRange()
      for decoration in decorations
        if decoration.isType('line') or decoration.isType('line-number')
          @updateLineDecorationCaches(decoration, range)
        else if decoration.isType('highlight')
          visibleHighlights[decoration.id] = @updateHighlightState(decoration)


      @updateOverlaysState()

  didDestroyDecoration: (decoration) ->
    if decoration.isType('line') or decoration.isType('line-number')
      @removeFromLineDecorationCaches(decoration, decoration.getMarker().getScreenRange())
      @updateLinesState() if decoration.isType('line')
      @updateLineNumbersState() if decoration.isType('line-number')
    if decoration.isType('highlight')
      @updateHighlightState(decoration)
    if decoration.isType('overlay')
