When you use CopyCanvas, you need to use the Canvas for the variables 
SCAR Code:
program ResizeBitmap;
const
InW = 300;
InH = 300;
OutW = 100;
OutH = 100;
var
BitmapIn, BitmapOut: Integer;
begin
BitmapIn := BitmapFromString(InW, InH, '');
BitmapOut := BitmapFromString(OutW, OutH, '');
try
FastDrawClear(BitmapIn, clRed);
with GetBitmapCanvas(BitmapIn) do
begin
Brush.Color := clBlue;
Rectangle(10, 10, InW - 10, InH - 10);
Brush.Color := clYellow;
RoundRect(10, 10, InW - 10, InH - 10, InW * 2 - 20, InH * 2 - 20);
end;
CopyCanvas(GetBitmapCanvas(BitmapIn), GetBitmapCanvas(BitmapOut), 0, 0, InW, InH, 0, 0, OutW, OutH);
WriteLn('Original');
DisplayDebugImgWindow(InW, InH);
SafeDrawBitmap(BitmapIn, GetDebugCanvas, 0, 0);
Wait(5000);
WriteLn('Resize');
DisplayDebugImgWindow(OutW, OutH);
SafeDrawBitmap(BitmapOut, GetDebugCanvas, 0, 0);
finally
FreeBitmap(BitmapIn);
FreeBitmap(BitmapOut);
end;
end.