If you are using pure SDL, before you blit the surface use SDL_SetAlpha(MyValue), where MyValue is a byte value and 0 is completely translucent and 255 is completely visible. Use 128 as the value as often as you can, because it has been optimized for that case.