I don't understand the line 612 in fpcanvas.inc. Why (db or db) and not (db or dp) ? Is it an error ?
procedure TFPCustomCanvas.Rectangle (const Bounds:TRect);
var np,nb,dp,db,pb : boolean;
begin
np:= Pen.style <> psClear; // Need pen ?
nb:= Brush.style <> bsClear; // Need brush ?
dp:=(pen is TFPCustomDrawPen); // Pen draws ?
db:=(brush is TFPCustomDrawBrush); // Brush draws ?
if (np and nb) and not (db or db) then // line 612
DoRectangleAndFill (bounds)