Процедура выглядит так: CopyRect(const Dest: TRect; Canvas: TCanvas;
const Source: TRect), тоесть Dest - область назначения, а Source - область источника.
Значит, нужно переставить области местами, ведь
, - область будет находится за пределами картинки.
Это во-первых.
Во-вторых,
- лишнее, ведь ты используешь функцию Bounds, там нужно передать ширину области, а ты к ширине додаешь еще и pos.
PS. Я бы советовал использовать в данном случае (когда не нужно масштабирования) процедуру Canvas.Draw(X,Y:integer; Graphic:TGraphic)