Prinzipiell richtig.
Das mit dem Alpha in ScanLine oder nicht ist mir auch schon mal aufgefallen. Ich möchte nicht ausschließen, dass das von der Version von PNGDelphi (inzwischen somit Delphi) abhängt. Ich hatte mal
sehr großen Spaß (nicht!) mit Palettenbildern, wo in machen Delphi-Versionen 2BPP-Bilder plötzlich Scanlines mit 4BPP hatten, aber BitDepth 2 war. Darstellen von Palettenbildern hat aber mit beiden nicht funktioniert.
Absurde Idee:
Man könnte jetzt einen Bitmap-Header nehmen und hinter diesen einfach den Kram aus dem Grafikspeicher kippen. 32-Bit-Bitmaps sind standardmäßig ARGB (glaube ich) - könnte blöd sein. Mit V3INFOHEADER oder neuer und "Kompression"-Typ Bitfields kann man das umdefinieren.
Das Beispiel hier, aber Cardinals an 0x36 und 0x3E tauschen, dann hat man RGBA. Wenn die Höhe positiv ist, ist das Bitmap falschherum. 32-Bit-Bitmaps haben keine Füllbytes, das ist auch gut. Targa ist übrigens fix BGRA.