Look at TGtk2WidgetSet.StretchCopyArea method specifically what is done at:
if SrcDevContext.HasTransf then
begin
// TK: later with shear and rotation error here?
SrcDevContext.TransfPoint(XSrc, YSrc);
SrcDevContext.TransfExtent(SrcWidth, SrcHeight);
end;
SrcDCOrigin := SrcDevContext.Offset;
Inc(XSrc, SrcDCOrigin.X);
Inc(YSrc, SrcDCOrigin.Y);
if DstDevContext.HasTransf then
begin
// TK: later with shear and rotation error here?
DstDevContext.TransfPoint(X, Y);
DstDevContext.TransfExtent(Width, Height);
end;
DstDCOrigin := DstDevContext.Offset;
Inc(X, DstDCOrigin.X);
Inc(Y, DstDCOrigin.Y);
Try to replicate at
TCarbonDeviceContext.StretchDraw