Na, überleg doch mal, was du an dieser Stelle machst:
Ich erstelle die Opacity so :
Delphi-Quellcode:
Image3.Canvas.Pixels[x,y] :=
RGB(Trunc(Max(0,GetRValue(oldColor) - TransparentGrad * GetRValue(aColor))),
Trunc(Max(0,GetGValue(oldColor) - TransparentGrad * GetGValue(aColor))),
Trunc(Max(0,GetBValue(oldColor) - TransparentGrad * GetBValue(aColor))));
Du hast halt jetzt nicht mehr einen globalen Wert für "TransparentGrad", sondern dieser ist pro Pixel verschieden. Den Wert dafür erhältst du aus dem Alpha-Kanal deiner Bitmap.