You need to add a Translate after the Rotate to restore the center position.
Temp := TBGRABitmap.Create(ClientWidth, ClientHeight, BGRAWhite);
Affine := TBGRAAffineBitmapTransform.Create(Image);
Affine.Translate(-Image.Width div 2, -Image.Height div 2);
Affine.RotateDeg(Tick);
Affine.Translate(Image.Width div 2, Image.Height div 2);
Temp.Fill(Affine);
Affine.Free;
Temp.Draw(Canvas, 0, 0);
Temp.Free;