diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index a4c602757..38fb6d082 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1635,22 +1635,26 @@ D3D_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, centerx = center->x; centery = center->y; - if (flip & SDL_FLIP_HORIZONTAL) { - minx = dstrect->w - centerx - 0.5f; - maxx = -centerx - 0.5f; - } - else { - minx = -centerx - 0.5f; - maxx = dstrect->w - centerx - 0.5f; - } - - if (flip & SDL_FLIP_VERTICAL) { - miny = dstrect->h - centery - 0.5f; - maxy = -centery - 0.5f; - } - else { - miny = -centery - 0.5f; - maxy = dstrect->h - centery - 0.5f; + if ((flip & SDL_FLIP_VERTICAL) && (flip & SDL_FLIP_HORIZONTAL)) { + miny = dstrect->h - centery; + maxy = -centery; + minx = dstrect->w - centerx; + maxx = -centerx; + } else if (flip & SDL_FLIP_HORIZONTAL) { + miny = -centery; + maxy = dstrect->h - centery; + minx = dstrect->w - centerx; + maxx = -centerx; + } else if (flip & SDL_FLIP_VERTICAL) { + miny = dstrect->h - centery; + maxy = -centery; + minx = -centerx; + maxx = dstrect->w - centerx; + } else { + miny = -centery; + maxy = dstrect->h - centery; + minx = -centerx; + maxx = dstrect->w - centerx; } minu = (float) srcrect->x / texture->w; diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 94914ead1..bb789c138 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -1250,22 +1250,26 @@ GL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, centerx = center->x; centery = center->y; - if (flip & SDL_FLIP_HORIZONTAL) { - minx = dstrect->w - centerx; - maxx = -centerx; - } - else { - minx = -centerx; - maxx = dstrect->w - centerx; - } - - if (flip & SDL_FLIP_VERTICAL) { - miny = dstrect->h - centery; + if ((flip & SDL_FLIP_VERTICAL) && (flip & SDL_FLIP_HORIZONTAL)) { + miny = dstrect->h - centery; maxy = -centery; - } - else { + minx = dstrect->w - centerx; + maxx = -centerx; + } else if (flip & SDL_FLIP_HORIZONTAL) { miny = -centery; - maxy = dstrect->h - centery; + maxy = dstrect->h - centery; + minx = dstrect->w - centerx; + maxx = -centerx; + } else if (flip & SDL_FLIP_VERTICAL) { + miny = dstrect->h - centery; + maxy = -centery; + minx = -centerx; + maxx = dstrect->w - centerx; + } else { + miny = -centery; + maxy = dstrect->h - centery; + minx = -centerx; + maxx = dstrect->w - centerx; } minu = (GLfloat) srcrect->x / texture->w;