Hallo,
warum verwendest Du nicht
TImageList.Draw? Momentan erzeugst Du für jedes Bild ein temporäres Bitmap-Objekt, malst da rein und malst das denn erst aufs Ziel. Das kostet natürlich.
Außerdem sind Deine Schleifen immer einen Durchlauf zu lang (0 bis 40 sind 41 Elemente).
Gruß
xaromz