Warum wird hier 1 abgezogen?
Indizierung. Ein Bitmap der Breite 640 hat die Pixelkoordinaten 0..639. Normalerweise! Allerdings kann das hier in der Tat das Problem sein, der Autor war sich zwar beim FloatRect() der anderen Rasterbildung bei Float-Indizierung bewusst, beim Translate() dagegen nicht. Also die "-1" mal raus, und beim FloatRect() die "+1" weg. Das könnte es schon sein.
Ansonsten: Hat dein Bitmap gerade oder ungerade Ausmaße? Wie verhält sich das mit einem Bitmap je ein Pixel höher und breiter? Und: Ist das Bitmap wirklich exakt quadratisch?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)