512c512
< 	  a->tweencolor = gdTrueColorAlpha (
---
> 	  a->tweencolor = gdAlphaBlend(bg, gdTrueColorAlpha (
516c516
< 	       gdAlphaMax - (gdTrueColorGetAlpha (fg) * pixel / NUMCOLORS));
---
> 	       gdAlphaMax - ((gdAlphaMax - gdTrueColorGetAlpha(fg)) * pixel / NUMCOLORS)));
606c606
< 	      if (tc_key.pixel == NUMCOLORS)
---
> 	      if (tc_key.pixel == NUMCOLORS && gdTrueColorGetAlpha(fg) == 0)
