anchor.diff:    void _adjustViewport() {
       _viewport.setTo(_bounds.right - _content.width, _bounds.bottom - _content.height);
       _hbar
  -        ..width = _bounds.width
  -        ..y = _bounds.bottom - _hbar.height
  -        ..range = _bounds.width
  -        ..maximum = _content.width;
  +      ..width = _bounds.width
  +      ..y = _bounds.bottom - _hbar.height
  +      ..range = _bounds.width
  +      ..maximum = _content.width;
       _vbar
  -        ..height = _bounds.height
  -        ..x = _bounds.right - _vbar.width
  -        ..range = _bounds.height
  -        ..maximum = _content.height;
  +      ..height = _bounds.height
  +      ..x = _bounds.right - _vbar.width
  +      ..range = _bounds.height
  +      ..maximum = _content.height;
  +    _showScrollBars();
     }
   
     _showScrollBars() {
  -    _hbar.visible = visibleHBar;
  -    _vbar.visible = visibleVBar;
  +    _hbar.visible = hbarVisible;
  +    _vbar.visible = vbarVisible;
     }
   
  -  bool get visibleHBar => _content.width > _bounds.width;
  -  bool get visibleVBar => _content.height > _bounds.height;
  +  int get overScrollModel => _overScrollModel;
  +
  +  void set overScrollModel(int val) {
  +    _overScrollModel = val;
  +    _showScrollBars();
  +  }
  +
  +  bool get hbarVisible {
  +    if(_overScrollModel == OVER_SCROLL_ALWAYS) return true;
  +    if(_overScrollModel == OVER_SCROLL_IF_CONTENT_SCROLLS) return _content.width > _bounds.width;
  +    return false;
  +  }
  +
  +  bool get vbarVisible {
  +    if(_overScrollModel == OVER_SCROLL_ALWAYS) return true;
  +    if(_overScrollModel == OVER_SCROLL_IF_CONTENT_SCROLLS) return _content.height > _bounds.height;
  +    return false;
  +  }
   }
  
positive.code:     super.repaint();
      if (_backgroundColor != null) {
        graphics
            ..clear()
            ..rect(_bounds.left, _bounds.top, _bounds.width, _bounds.height)
            ..fillColor(_backgroundColor);
      }
    }
  
  
negative.code:   }
  
    void _stopScrolling() {
      _showScrollBars();
      stage.removeEventListener(MouseEvent.MOUSE_MOVE, _stageMouseMoveHandler);
      stage.removeEventListener(MouseEvent.MOUSE_UP, _stageMouseUpHandler);
    }
  