non mi sono messo a leggere tutto il codice ma penso che tu abbia un problema con il canale alpha, per caso sai dirci se le immagini GIF e PNG con cui hai provato hanno trasparenze?