SDL_BlitSurface is acting exactly as intended. If you’re doing an RGBA->RGBA blit from any surface onto a completely transparent surface, then you need to use SDL_SetAlpha to remove the SDL_SRCALPHA flag from your source surface. If you want the transparent parts to still shine through, then you have to use SDL_SetColorKey (SDL_SRCCOLORKEY flag) on your source surface. If you don’t do these things, you’ll end up either blitting nothing or blitting exactly what you had on the source surface. If you want more alpha-blending options, then look into OpenGL, DirectX, or Sprig (for software). http://pubpages.unh.edu/~jmb97/SPriG.html