Thanks for reporting. It seems that something broke it between v2.2.6 and v3.0.0...
[EDIT]
Found it - it was caused by some optimization more than two years ago. Is fixed in Laz/main and /fixes (i.e. will be included in v.4.2). If you want to fix your current version open file tagraph.pas from folder components/tachart of your Lazarus installation. Find the implementation of TChart.SetLogicalExtent. Insert "FOldClipRect := ZeroRect" before the line "FLogicalExtent := AValue"
procedure TChart.SetLogicalExtent(AValue: TDoubleRect);
var
AllowChange: Boolean;
w, h: Double;
begin
[...]
if FLogicalExtent = AValue then exit;
w := Abs(AValue.a.X - AValue.b.X);
h := Abs(AValue.a.Y - AValue.b.Y);
with ExtentSizeLimit do
if
UseXMin and (w < XMin) or UseXMax and (w > XMax) or
UseYMin and (h < YMin) or UseYMax and (h > YMax)
then
exit;
FOldClipRect := ZeroRect;
FLogicalExtent := AValue;
FIsZoomed := true;
StyleChanged(Self);
end;
Then do the same in TChart.ZoomFull:
procedure TChart.ZoomFull(AImmediateRecalc: Boolean);
begin
if AImmediateRecalc then
FLogicalExtent := GetFullExtent;
if not FIsZoomed then exit;
FIsZoomed := false;
FOldClipRect := ZeroRect;
Invalidate;
end;