1. Deine Funktion erzeugt ein TImage welches du niemals wieder freigibst und somit ein grosses Speicherleck erzeugt.
2. Die BitBlt() Funktion spiegelt das Bild, wenn die Höhen- bzw. Weitenangabe negativ sind. Nun ist die Frage ob das BitBlt() VCL intern irgendwo aufgerufen wird, oder du das irgendwo machst. Daher erstmal die Frage: kann es zu einer negativen Weitenangabe bei deinem Code kommen?
/EDIT: SirThornberry hat natürlich Recht. Das habe ich total übersehen. Grundsätzlich bleibt aber immernoch Punkt 1 zu beachten...