Szybszy sposób blittowania grafiki z SDL 1.2

siema.
próbuję uzyskać efekt stopniowego znikania/pojawiania się obrazka wyświetlanego na ekranie przy użyciu bibliotek SDL 1.2.x. W tym momencie, mając daną warstwę screen_SDL, zawierającą obrazek, początkową wartość alpha oraz alphainc, oraz mode = fadeout lub fadein (dest określa wymiary 0,0,screen->w,screen->h), uzyskuję to w następujący sposób:

while(alpha >= 0 && alpha < 256) {
  if (strcmp(mode, "fadeout") == 0) clearscreen(0, 0, 0);

  /* Display the surface */
  if (!use_gl) {			// OpenGL OFF
    SDL_SetAlpha(screen_SDL, SDL_SRCALPHA, alpha);
    SDL_BlitSurface(screen_SDL, NULL, screen, &dest);
  }
  else {					// OpenGL ON
    ...
  }
  flipscreen();
  SDL_Delay(100);

  /* Calculate the next alpha value */
  alphadiff += alphainc;
  if(strcmp(mode, "fadein") == 0) alpha += alphadiff;
  else alpha -= alphadiff;
}

Problem w tym, że trochę zamula to na starszym sprzęcie (CPU ~1GHz z grafą Radeon 9200). Czy istnieje jakaś alternatywa, żeby zamierzony efekt uzyskać szybciej?
Wiem, że SDL 2 zapewne dawałby lepsze wyniki, ale akurat w tej chwili jestem przywiązany do 1.2.
Mogę korzystać też z SDL_gfx 2.0.25 - jest tam jakaś funkcję SDL_gfxBlitRGBA(), ale na tyle co zdążyłem się przyjrzeć dołączonemu przykładowi w TestGfxBlit.c, to tam i tak na koniec wywoływane jest SDL_BlitSurface() dla wyrzucenia wszystkiego na ekran…