Du musst das Scrolling mit der Mauskoordinate verrechnen. Wenn du nach links scrollst, heißt das, dass du die Engine nach rechts verschiebst (analog mit den anderen Richtungen).
Delphi-Quellcode:
procedure TEngine.MouseMove(X, Y: integer);
begin
X:=Round(-SpriteEngine.X)+X;
Y:=Round(-SpriteEngine.Y)+Y;
// .......
end;
Klappt bei mir wunderbar