 
       for key, __ of histocache
         sprite = @sprites[key]
+        continue if !sprite
         updating_opacity = sprite.target_opacity != sprite.from_opacity || sprite.opacity != 1
         if updating_opacity
           @buff_ctx.save()

  onMouseLeave: (ev) ->     
    return if fetch(namespaced_key('slider', @props.proposal)).is_moving

    opinion_views = fetch 'opinion_views'
    active = opinion_views.active_views
    originating_histogram = (active.single_opinion_selected or active.region_selected)?.created_by == @props.histo_key

    @local.mouse_opinion_value = null    
    save @local

    # return if originating_histogram





          some_region_selected && 
           (!@local.touched || inRange(@local.mouse_opinion_value, min, max)))

        # page resizes because of changing pros/cons shown unless we fix the height of the reasons region 
        reasons_region_el = ReactDOM.findDOMNode(@).closest('.OpinionBlock').querySelector('.reasons_region')

        if is_deselection
          clear_histogram_managed_opinion_views opinion_views
          if ev.type == 'touchstart'
            @local.mouse_opinion_value = null
          reasons_region_el.style.minHeight = null
        else if @enable_range_selection

          reasons_region_el.style.minHeight = "#{$$.height(reasons_region_el)}px"
          clear_histogram_managed_opinion_views opinion_views, 'single_opinion_selected'

          @users_in_region = @getUsersInRegion()
