anchor.diff:    with AnImage.Canvas do
     begin
       Brush.Color := Color;
  -    FillRect(PaintRect);
  +    FillRect(APaintRect);
       Brush.Color := BackColor;
       Pen.Color := ForeColor;
       Pen.Width := 1;
  -    Ellipse(PaintRect.Left, PaintRect.Top, W, H);
  +    Ellipse(APaintRect.Left, APaintRect.Top, W, H);
       if PercentDone > 0 then
       begin
         Brush.Color := ForeColor;
         MiddleX := W div 2;
         MiddleY := H div 2;
         Angle := (Pi * ((PercentDone / 50) + 0.5));
  -      Pie(PaintRect.Left, PaintRect.Top, W, H,
  -        Integer(Round(MiddleX * (1 - Cos(Angle)))),
  -        Integer(Round(MiddleY * (1 - Sin(Angle)))), MiddleX, 0);
  -    end;
  -  end;
  -end;
  -
  -procedure TGauge.PaintAsNeedle(AnImage: TBitmap; PaintRect: TRect);
  -var
  -  MiddleX: Integer;
  -  Angle: Double;
  -  X, Y, W, H: Integer;
  -begin
  -  with PaintRect do
  +      Pie(APaintRect.Left, APaintRect.Top, W, H,
  +        integer(Round(MiddleX * (1 - Cos(Angle)))),
  +        integer(Round(MiddleY * (1 - Sin(Angle)))), MiddleX, 0);
  +    end;
  +  end;
  +end;
  +
  +procedure TGauge.PaintAsNeedle(AnImage: TBitmap; APaintRect: TRect);
  +var
  +  MiddleX: integer;
  +  Angle: double;
  +  X, Y, W, H: integer;
  +begin
  +  with APaintRect do
     begin
       X := Left;
       Y := Top;
  
positive.code:   if FCurValue <> Value then
    begin
      FCurValue := Value;
      if TempPercent <> GetPercentDone then { only refresh if percentage changed }
        Refresh;
    end;
  end;
  
  procedure TGauge.AddProgress(Value: Longint);
  begin
    Progress := FCurValue + Value;
    Refresh;
  
negative.code: procedure TGauge.Paint;
  var
    TheImage: TBitmap;
    OverlayImage: TBitmap;
    PaintRect: TRect;
  begin
    with Canvas do
  