anchor.diff:    // Paint the area between the buttons and the Slider
     if Orientation = orVertical then
     begin
  -    if PrevAreaPressed then
  +    if FScrollbarDownPart in [sbpUpBack, sbpPageUpBack] then
       begin
         Canvas.SetColor(clShadow1);
         Canvas.FillRectangle(0, Width, Width, FSliderPos);
         Canvas.SetColor(clScrollBar);
       end
  -    else if NextAreaPressed then
  +    else if FScrollbarDownPart in [sbpDownForward, sbpPageDownForward] then
       begin
         Canvas.SetColor(clShadow1);
  -      Canvas.FillRectangle(0, FSliderPos + FSliderLength, Width, Height - Width - FSliderPos);
  +      Canvas.FillRectangle(0, FSliderPos + FSliderLength, Width, Height - Width - (FSliderPos + FSliderLength));
         Canvas.SetColor(clScrollBar);
       end;
     end
     else
     begin
  -    if PrevAreaPressed then
  +    if FScrollbarDownPart in [sbpUpBack, sbpPageUpBack] then
       begin
         Canvas.SetColor(clShadow1);
         Canvas.FillRectangle(Height, 0, FSliderPos, Height);
         Canvas.SetColor(clScrollBar);
       end
  -    else if NextAreaPressed then
  +    else if FScrollbarDownPart in [sbpDownForward, sbpPageDownForward] then
       begin
         Canvas.SetColor(clShadow1);
  -      Canvas.FillRectangle(FSliderPos + FSliderLength, 0, Width - Height - FSliderPos, Height);
  +      Canvas.FillRectangle(FSliderPos + FSliderLength, 0, Width - Height - (FSliderPos + FSliderLength), Height);
         Canvas.SetColor(clScrollBar);
       end;
     end;
  
positive.code:   TScrollNotifyEvent = procedure(Sender: TObject; position: integer) of object;
  
    TfpgScrollStyle = (ssNone, ssHorizontal, ssVertical, ssAutoBoth);
  
    TfpgScrollBar = class(TfpgWidget)
    private
      FLargeChange: Integer;
      PrevAreaPressed: Boolean;
      NextAreaPressed: Boolean;
      procedure   SetMax(const AValue: integer);
      procedure   SetMin(const AValue: integer);
      procedure   SetPosition(const AValue: integer);
  
negative.code:     begin
        // Left button has been pressed
        PositionChange(-FScrollStep);
        FScrollbarDownPart := sbpUpBack;
        FActiveButtonRect.SetRect(0, 0, Height, Height);
      end
      else if x >= Width - Height then
      begin
        // Right button has been pressed
        PositionChange(FScrollStep);
        FScrollbarDownPart := sbpDownForward;
        FActiveButtonRect.SetRect(Width-Height, 0, Width, Height);
      end
      else if (x >= (Height + FSliderPos)) and (x <= Height + FSliderPos + FSliderLength) then
      begin
        FScrollbarDownPart := sbpSlider;
        FSliderDragPos  := x;
      end
      else if (x > Height) and (x < (Height + FSliderPos)) then
      begin
        // Clicked between Left button and Slider
        FScrollbarDownPart := sbpPageUpBack;
        PositionChange(-(FScrollStep * 5));
      end
      else if (x < (Width - Height)) and (x > (Height + FSliderPos + FSliderLength)) then
      begin
        // Clicked between the Right button and Slider
        FScrollbarDownPart := sbpPageDownForward;
        PositionChange(FScrollStep * 5);
      end;
    end;
    
    if FScrollbarDownPart = sbpSlider then
    begin
      FSliderDragStart := FSliderPos;
      DrawSlider(False);
    end
    else if FScrollbarDownPart <> sbpNone then
    begin
      FScrollTimer.Interval := 500;
      FScrollTimer.Enabled := True;
  