Well, if you didn’t know it yet: GIF can only have 256 colors and index transparency. That means you can only either have 0% or 100% transparency, nothing in between. So, all the pixels at the edge of an object that are semi-transparent will become fully opaque (solid) when you export it as GIF. The best you can do there – well, actually you can’t do anything there that wouldn’t become obvious in the end with that gradient background.
However, IE7 doesn’t have any transparency issues with images unless you change the opacity with CSS where the transparent parts become black, which, obviously, you are doing. I’ve read that a workaround to this is to not change the opacity of the elements with the images themselves but to change the opacity of their parents/containers but others, on the other hand, have also reported that this doesn’t work either. I found something on
sitepoint, I don’t know if that’s of help.
As last resort your option would be to provide the fade effect to browsers that can handle it and for IE you just make it switch from a semi-transparent state to fully opaque (which means switch the images themselves, not set CSS opacity).