Это из-за того, как прозрачность обрабатывается в файлах GIF. Формат файла не имеет альфа-канала, только один цвет помечен как прозрачный. Это означает, что каждый пиксель может быть только полностью прозрачным или полностью непрозрачным.
Когда вы сохраняете изображение в формате GIF, программа преобразует любые частично прозрачные пиксели в полностью прозрачные (если они почти прозрачные) или полностью прозрачные, изменяя цвет на тот, который был бы, если бы он был нарисован на сплошном цвет фона (называемый матовым).
В вашем случае матовый цвет является белым по умолчанию, поэтому любые частично прозрачные пиксели будут блеклыми в сторону белого. Если вы всегда отображаете изображение на одном и том же фоне, вы просто указываете этот цвет как матовый, и программа будет постепенно затенять частично прозрачные пиксели для этого цвета, делая переход невидимым.
Если вам нужно отобразить изображение на разных фонах, вам нужно либо использовать одно изображение для каждого цвета фона, либо использовать формат файла PNG, который может поддерживать альфа-канал.
(Обратите внимание, что IE6 не отображает PNG-изображения с альфа-каналом правильно, но есть исправление для этого, если вам нужна поддержка IE6.)