You might be able to do something similar to this. I'm assuming you're using normal Bitblt to do your transparent blts. Well, this involves two separate blts if I remember correctly. I can't remember the operator names (vbscrpaint/vbsrccopy) but couldn't you do one and put that in memory and then grab it when you need to do the second blt later? That way you can do one blt a head of time and save yourself from blting twice, who knows how many times, later?

This might not work but hey, its an idea.