This isn't exactly what you are doing but it works and makes it transparent

[pascal]
ImageSurface := SDL_CreateRGBSurface(SDL_SWSURFACE or SDL_HWPALETTE, Width,Height,
ColorDepth, 0, 0, 0, 0);
SDL_SetColorKey(ImageSurface, SDL_SRCCOLORKEY or SDL_RLEACCEL or SDL_HWACCEL,
SDL_MapRGB(ImageSurface.format, R,G,B));
SDL_BlitSurface(FontSurface, nil, Image.ImageSurface, @D );
[/pascal]

I set the transparency BEFORE drawing on the surface.

Let us know if this helps.