SDL2 Blits with Alpha ignored with OpenGL window

Hello all, having problems blitting RGBA -> RGB surfaces. I currently have a window created using:

Code:
SDL_ClearError();
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);

this->w = SDL_CreateWindow(“Redintegrate”,
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
500,500,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN
);

if(!this->w)
{
throw string("SDL_CreateWindow(): " + string(SDL_GetError()));
}

this->context = SDL_GL_CreateContext(this->w);

This works and I am rendering OpenGL just fine as well as drawing SDL_Surfaces through OpenGL. Now, my problem is my SDL code. I currently have images (RGBA png’s) loaded with IMG_Load, that’s fine, it loads the image with the alpha and have confirmed that it has correct alpha values. I also have a surface created with SDL_CreateRGBSurface(0, width, height, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); I then try to blit multiple images (all with alpha from IMG_Load) to this surface. See below:

Code:
SDL_Surface* ring = this->ring->getSDLImage();
SDL_Rect rRing = {this->x,this->y, ring->w, ring->h};

SDL_Surface* dot = this->dot->getSDLImage();
SDL_Rect rDot = {rRing.x + (ring->w - dot->w)/2, rRing.y + (ring->h - dot->h)/2, dot->w, dot->h};

SDL_Surface* pulse = this->pulse->getSDLImage();
SDL_Rect rPulse = {this->x, this->y, pulse->w * progress, pulse->h * progress};
SDL_SetSurfaceBlendMode(pulse, SDL_BLENDMODE_ADD);
SDL_SetSurfaceBlendMode(dot, SDL_BLENDMODE_ADD);
SDL_SetSurfaceBlendMode(ring, SDL_BLENDMODE_ADD);
// SDL_SetSurfaceAlphaMod(pulse, 10);
// SDL_SetSurfaceAlphaMod(this->window, 10);
// SDL_SetSurfaceBlendMode(this->window, SDL_BLENDMODE_BLEND); // I keep alternating these calls to see if anything happens, nothing changes

SDL_UpperBlitScaled(ring, nullptr, this->window, &rRing);
SDL_UpperBlitScaled(dot, nullptr, this->window, &rDot);
SDL_UpperBlitScaled(pulse, nullptr, this->window, &rPulse);

Now, the above code is essentially copying the src to the dest surface as-if there is no blending (SDL_BLENDMODE_NONE) and the alpha values are just copied. This may be related to my previous bug report (http://bugzilla.libsdl.org/show_bug.cgi?id=1518), but if I recall, the bug was about it dropping alpha.

I tried going through the SDL2 source (I am using the trunk as-of the start of the month, will grab the latest later on today) to see why it would drop alpha blending and will see if it actually is calling the alpha blit function (sdl_blit_A.c ?)

After updating and getting SDL_image to compile using the latest libraries, turns out that I can blit correctly now, however, this is using SDL_SoftStretch (overridden in SDL_UpperBlitScaled). Is this the intended solution, or is this a temporary fix?