         if decoration.isType('line') or decoration.isType('gutter')
           @addToLineDecorationCaches(decoration, range)
         else if decoration.isType('highlight')
-          visibleHighlights[decoration.id] = @updateHighlightState(decoration)
+          @updateHighlightState(decoration)
 
     for tileId, tileState of @state.content.tiles
       for id, highlight of tileState.highlights
-        unless visibleHighlights[id]
-          delete tileState.highlights[id]
+        delete tileState.highlights[id] unless @visibleHighlights[tileId]?[id]?
 
     return
 

      highlightState.class = properties.class
      highlightState.deprecatedRegionClass = properties.deprecatedRegionClass
      highlightState.regions = @buildHighlightRegions(tileStartRow, tileRange)

      startRow = tileEndRow


      endRow = Math.min(@model.getScreenLineCount(), startRow + @tileSize)

      tile = @state.content.tiles[startRow] ?= {}
      tile.startRow = startRow
      tile.top = startRow * @lineHeight - @scrollTop
      tile.left = -@scrollLeft
      tile.height = @tileSize * @lineHeight
