Canvas geht meines Wissens ja nur mit Bitmap.
Da ist dein Wissen falsch. Canvas geht mit TMetafileCanvas (ziemlich spezielles Ding) und insbesondere auch TPngImage.
Daher ist in tomkupitz' Lösung auch das Schreiben von Scanline unnötig - CopyRect tut's auch. Alpha muss aber meines Wissens immer noch per Scanline.