Du setzt die Größe des Bitmaps auf die Größe des Icons, obwohl das Icon noch leer ist.
Versuche mal:
Delphi-Quellcode:
TmpBMP := TBitmap.Create;
TmpIcon := Icon.Create;
try
TmpIcon.Handle := ImageHandle; //erst zuweisen
TmpBMP.Width := Icon.Width; //dann die Größe anpassen
TmpBMP.Height := Icon.Height;
TmpBMP.Canvas.Draw(0, 0, TmpIcon);
//usw.
Bin mir nicht sicher, ob es dann klappt - aber evtl. könnte das die Lösung sein