Ich würde ja das sinnlose Paint aus der Basisklasse TGeoForm entfernen.
TOval.Paint braucht auch keine lokalen variablen, das kann ganz übersichtlich bleiben:
Delphi-Quellcode:
procedure TOval.Paint();
begin
Canvas.Brush.Color := self.Fuellfarbe;
Canvas.Pen.Color := self.Randfarbe;
Canvas.Pen.Width := 3;
Canvas.Ellipse(0, 0, width, height);
end;
Setze mal auch noch Oval.Left und Oval.Top.
Die Bounds sind in der Basisklasse schon gesetzt worden.