Den einzigsten fehler den ich gefunden habe ist hier zu finden:
Delphi-Quellcode:
aSource.Width := abs(last.X-start.X);
aSource.Height := abs(last.Y-start.Y);
die breite bzw die höhe ist falsch berechnet, es muss ein pixel dazu addiert werden, also so hier:
Delphi-Quellcode:
aSource.Width := abs(last.X-start.X)+1;
aSource.Height := abs(last.Y-start.Y)+1;
ansonsten funktioniert der code perfekt, hab ihn selbst getestet.