I found this but I don't understand it completely & nor I know if it will solve my problem:
I think your problem lies in the way color-to-alpha works: by definition, the color and transparency produced by color-to-alpha is such that if placed over a layer filled by the removed color, you get back the original layer. For instance, if you have a violet pixel (128,0,128) and do a color-to-alpha to remove the red (255,0,0) you get a 50% transparent blue (0,0,255), because this partially transparent blue, placed over pure red, produces a violet pixel.
However, this definition isn't complete, because, after all, a completely opaque violet pixel, placed over red, would also produce violet, and some more reddish but less transparent violet would so the same. So, C2A picks the color that comes with the higher transparency.
But this means that C2A can find of a bit of your color almost everywhere, and make all the pixels in your layer slightly transparent. So the right technique to remove a background is to select only the parts on which C2A should apply. This is easy:
- Select the background with the Fuzzy select
- "Select/Grow" by one pixels. The selection now includes the border pixels of what you want to keep. These are the important pixels...
- Apply color-to-alpha. The border pixels become partially transparent and you keep the anti-aliasing effect.
Also, as a side note, don't use GIF, except for short animations. For all other purposes, except photography, PNG is a much better format. All decent software will use it.