anchor.diff:      if (barHeight == 100) return;
       var newCntTop;
       var newBarTop;
  -    if (ev.deltaY > 0) {
  -      // Scroll up
  -      newCntTop = contentTop + step;
  -      newBarTop = barTop - windowHeight*(step/contentHeight);
  -      if (newBarTop < 0) {
  -        newBarTop = 0;
  -        newCntTop = 0;
  +    if (contentHeight > 0) {
  +      if (ev.deltaY > 0) {
  +        // Scroll up
  +        newCntTop = contentTop + step;
  +        newBarTop = barTop - windowHeight*(step/contentHeight);
  +        if (newBarTop < 0) {
  +          newBarTop = 0;
  +          newCntTop = 0;
  +        }
  +      } else {
  +        // Scroll down
  +        newCntTop = contentTop - step;
  +        newBarTop = barTop + windowHeight*(step/contentHeight);
  +        if (newBarTop + barHeightPx > windowHeight) {
  +          newBarTop = windowHeight - barHeightPx;
  +          newCntTop = windowHeight - contentHeight;
  +        }
         }
       } else {
  -      // Scroll down
  -      newCntTop = contentTop - step;
  -      newBarTop = barTop + windowHeight*(step/contentHeight);
  -      if (newBarTop + barHeightPx > windowHeight) {
  -        newBarTop = windowHeight - barHeightPx;
  -        newCntTop = windowHeight - contentHeight;
  -      }
  +      newBarTop = 0;
  +      newCntTop = 0;
       }
       barTop = newBarTop;
       contentTop = newCntTop;
       redrawInvoked = true;
       redraw();
     }
  -  
  +
     mouseDown(ev) {
       if (ev is SyntheticMouseEvent) {
  -      ev.nativeEvent.preventDefault();      
  -      startY = ev.pageY;  
  +      ev.nativeEvent.preventDefault();
  +      startY = ev.pageY;
       } else {
         ev.preventDefault();
         startY = ev.page.y;
       }
       startTop = barTop;
  -    
  +
       ssMouseMove = htmlWindow.onMouseMove.listen(mouseMove);
       ssMouseUp = htmlWindow.onMouseUp.listen(mouseUp);
  -  
  +
     }
  -  
  +
     mouseMove(ev) {
       var diffY;
       if (ev is SyntheticMouseEvent) {
  -      diffY = ev.pageY - startY;    
  +      diffY = ev.pageY - startY;
       } else {
         diffY = ev.page.y - startY;
       }
  
positive.code:       ])
      ]);
    }
    
    recalculateBorders() {
      var content = ref('$contentId');
      window = ref('$windowId');
  
negative.code: typedef ScrollbarType(List children, {String containerClass, int scrollStep});
  
  class ScrollbarComponent extends Component {
  
    var barTop;
    var contentTop;
    var barHeight;
  