diff -r 1619292eec30 src/render/opengl/SDL_render_gl.c --- a/src/render/opengl/SDL_render_gl.c Fri May 10 10:33:15 2013 -0300 +++ b/src/render/opengl/SDL_render_gl.c Sat May 11 08:01:20 2013 +0200 @@ -794,7 +794,8 @@ if (!SDL_RectEmpty(rect)) { data->glEnable(GL_SCISSOR_TEST); - data->glScissor(rect->x, rect->h - rect->y, rect->w, rect->h); + const int lowerLeft = renderer->viewport.h - rect->y - rect->h; + data->glScissor(rect->x, lowerLeft, rect->w, rect->h); } else { data->glDisable(GL_SCISSOR_TEST); } diff -r 1619292eec30 src/render/opengles/SDL_render_gles.c --- a/src/render/opengles/SDL_render_gles.c Fri May 10 10:33:15 2013 -0300 +++ b/src/render/opengles/SDL_render_gles.c Sat May 11 08:01:20 2013 +0200 @@ -645,7 +645,8 @@ if (!SDL_RectEmpty(rect)) { data->glEnable(GL_SCISSOR_TEST); - data->glScissor(rect->x, rect->h - rect->y, rect->w, rect->h); + const int lowerLeft = renderer->viewport.h - rect->y - rect->h; + data->glScissor(rect->x, lowerLeft, rect->w, rect->h); } else { data->glDisable(GL_SCISSOR_TEST); } diff -r 1619292eec30 src/render/opengles2/SDL_render_gles2.c --- a/src/render/opengles2/SDL_render_gles2.c Fri May 10 10:33:15 2013 -0300 +++ b/src/render/opengles2/SDL_render_gles2.c Sat May 11 08:01:20 2013 +0200 @@ -288,7 +288,8 @@ if (!SDL_RectEmpty(rect)) { rdata->glEnable(GL_SCISSOR_TEST); - rdata->glScissor(rect->x, rect->h - rect->y, rect->w, rect->h); + const int lowerLeft = renderer->viewport.h - rect->y - rect->h; + rdata->glScissor(rect->x, lowerLeft, rect->w, rect->h); } else { rdata->glDisable(GL_SCISSOR_TEST); }