diff --git a/src/Ryujinx.Graphics.Gpu/Window.cs b/src/Ryujinx.Graphics.Gpu/Window.cs
index 6bcedd2b7..d82f66836 100644
--- a/src/Ryujinx.Graphics.Gpu/Window.cs
+++ b/src/Ryujinx.Graphics.Gpu/Window.cs
@@ -213,7 +213,7 @@ namespace Ryujinx.Graphics.Gpu
texture.SynchronizeMemory();
// Add overlays by modifying texture data directly
- AddOverlaysToTexture(texture);
+ AddOverlaysToTexture(texture, pt.Crop);
ImageCrop crop = new(
(int)(pt.Crop.Left * texture.ScaleFactor),
@@ -264,7 +264,8 @@ namespace Ryujinx.Graphics.Gpu
/// Add overlays to the texture using SkiaSharp
///
/// The texture to modify
- private void AddOverlaysToTexture(Image.Texture texture)
+ /// The crop information containing flip flags
+ private void AddOverlaysToTexture(Image.Texture texture, ImageCrop crop)
{
try
{
@@ -314,9 +315,9 @@ namespace Ryujinx.Graphics.Gpu
// Create canvas for drawing overlays
using var canvas = new SKCanvas(bitmap);
- // On Linux with OpenGL, we need to flip the Y-axis because OpenGL uses bottom-left origin
- // while SkiaSharp uses top-left origin
- if (OperatingSystem.IsLinux())
+ // Flip Y-axis if the game/texture requires it
+ // Some games have textures that are already flipped, while others need flipping
+ if (crop.FlipY)
{
canvas.Scale(1, -1);
canvas.Translate(0, -height);