The problem starts when you click into the chart to trigger the ShowMessage. But primarily, the click initiates a zooming process. I don't know exactly what happens when the message is shown, but the chart is still in zooming mode even when the message is closed - that's why that rectangle appears.
A way to avoid this is to deactivate zooming in the Object Inspector: Chart1.AllowZoom := false. If you need zooming afterwards you can switch AllowZoom back to true again. But as I found out, in Linux it is not sufficient to do this immediately after the ShowMessage call, instead it must be queued asynchronously:
procedure TfrTest.DoAllowZoom(AData: PtrInt);
begin
TChart(AData).AllowZoom := true;
end;
procedure TfrTest.FrameEnter(Sender: TObject);
begin
ShowMessage('Enter');
// Chart1.AllowZoom := true; // <---- this does not work
Application.QueueAsyncCall(@DoAllowZoom, PtrInt(Chart1));
end;
Another, even simpler, solution is to turn on the Chart's AutoFocus. (The problem is for me that I don't know why this works.)