diff --git a/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs b/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs
index affd479b..05a7288a 100644
--- a/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs
+++ b/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs
@@ -55,6 +55,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
         private ShaderProgram Shader;
 
         private Rect Viewport;
+        private Rect Window;
 
         private bool IsInitialized;
 
@@ -77,6 +78,11 @@ namespace Ryujinx.Graphics.Gal.OpenGL
 
         public void Create(long Tag, int Width, int Height)
         {
+            //TODO: We should either use the original frame buffer size,
+            //or just remove the Width/Height arguments.
+            Width  = Window.Width;
+            Height = Window.Height;
+
             if (Fbs.TryGetValue(Tag, out FrameBuffer Fb))
             {
                 if (Fb.Width  != Width ||
@@ -119,6 +125,8 @@ namespace Ryujinx.Graphics.Gal.OpenGL
 
             GL.DrawBuffer(DrawBufferMode.ColorAttachment0);
 
+            GL.Viewport(0, 0, Width, Height);
+
             Fbs.Add(Tag, Fb);
         }
 
@@ -207,6 +215,8 @@ namespace Ryujinx.Graphics.Gal.OpenGL
             GL.Uniform2(WindowSizeUniformLocation, new Vector2(Width, Height));
 
             GL.UseProgram(CurrentProgram);
+
+            Window = new Rect(0, 0, Width, Height);
         }
 
         public void SetViewport(int X, int Y, int Width, int Height)
@@ -234,7 +244,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
 
                 GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0);
 
-                GL.Viewport(0, 0, 1280, 720);
+                SetViewport(Window);
 
                 GL.Clear(
                     ClearBufferMask.ColorBufferBit |
@@ -255,10 +265,12 @@ namespace Ryujinx.Graphics.Gal.OpenGL
                 {
                     GL.Enable(EnableCap.Blend);
                 }
+
+                //GL.Viewport(0, 0, 1280, 720);
             }
         }
 
-        private void SetViewport()
+        private void SetViewport(Rect Viewport)
         {
             GL.Viewport(
                 Viewport.X,
diff --git a/Ryujinx/Ui/GLScreen.cs b/Ryujinx/Ui/GLScreen.cs
index 8ccbebfa..5e3e1e65 100644
--- a/Ryujinx/Ui/GLScreen.cs
+++ b/Ryujinx/Ui/GLScreen.cs
@@ -38,6 +38,8 @@ namespace Ryujinx
         protected override void OnLoad(EventArgs e)
         {
             VSync = VSyncMode.On;
+
+            Renderer.SetWindowSize(Width, Height);
         }
 
         protected override void OnUpdateFrame(FrameEventArgs e)
@@ -173,8 +175,6 @@ namespace Ryujinx
         {
             Ns.Statistics.StartSystemFrame();
 
-            GL.Viewport(0, 0, Width, Height);
-
             Title = $"Ryujinx Screen - (Vsync: {VSync} - FPS: {Ns.Statistics.SystemFrameRate:0} - Guest FPS: " +
                 $"{Ns.Statistics.GameFrameRate:0})";