Christian,
One last thing. I note that you've removed the assignments of lntop and lnleft to zero. If so, you need to restore them. These are the values that are used to move (using BitBlt) into the target. If they are not changed, the infomation is moved incorrectly.
George
Ubi caritas et amor, deus ibi est