diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index b4d63c372..761e6de43 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -794,7 +794,8 @@ GL_UpdateClipRect(SDL_Renderer * renderer) if (!SDL_RectEmpty(rect)) { data->glEnable(GL_SCISSOR_TEST); - data->glScissor(rect->x, rect->h - rect->y, rect->w, rect->h); + 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 --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index a71a346d9..f3cf8a9c0 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -645,7 +645,8 @@ GLES_UpdateClipRect(SDL_Renderer * renderer) if (!SDL_RectEmpty(rect)) { data->glEnable(GL_SCISSOR_TEST); - data->glScissor(rect->x, rect->h - rect->y, rect->w, rect->h); + 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 --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 3e3af7355..e2bbf4b3b 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -288,7 +288,8 @@ GLES2_UpdateClipRect(SDL_Renderer * renderer) if (!SDL_RectEmpty(rect)) { rdata->glEnable(GL_SCISSOR_TEST); - rdata->glScissor(rect->x, rect->h - rect->y, rect->w, rect->h); + int lowerLeft = renderer->viewport.h - rect->y - rect->h; + rdata->glScissor(rect->x, lowerLeft, rect->w, rect->h); } else { rdata->glDisable(GL_SCISSOR_TEST); }