diff --git a/Ryujinx.Graphics.GAL/IPipeline.cs b/Ryujinx.Graphics.GAL/IPipeline.cs
index 41e35dd40a..1a5f1cf02f 100644
--- a/Ryujinx.Graphics.GAL/IPipeline.cs
+++ b/Ryujinx.Graphics.GAL/IPipeline.cs
@@ -42,6 +42,8 @@ namespace Ryujinx.Graphics.GAL
 
         void SetImage(int index, ShaderStage stage, ITexture texture);
 
+        void SetPointSize(float size);
+
         void SetPrimitiveRestart(bool enable, int index);
 
         void SetPrimitiveTopology(PrimitiveTopology topology);
diff --git a/Ryujinx.Graphics.Gpu/Engine/Methods.cs b/Ryujinx.Graphics.Gpu/Engine/Methods.cs
index 31769f5a23..d9e7582b7a 100644
--- a/Ryujinx.Graphics.Gpu/Engine/Methods.cs
+++ b/Ryujinx.Graphics.Gpu/Engine/Methods.cs
@@ -161,6 +161,11 @@ namespace Ryujinx.Graphics.Gpu.Engine
                 UpdateVertexAttribState(state);
             }
 
+            if (state.QueryModified(MethodOffset.PointSize))
+            {
+                UpdatePointSizeState(state);
+            }
+
             if (state.QueryModified(MethodOffset.PrimitiveRestartState))
             {
                 UpdatePrimitiveRestartState(state);
@@ -507,6 +512,17 @@ namespace Ryujinx.Graphics.Gpu.Engine
             _context.Renderer.Pipeline.SetVertexAttribs(vertexAttribs);
         }
 
+        /// <summary>
+        /// Updates host point size based on guest GPU state.
+        /// </summary>
+        /// <param name="state">Current GPU state</param>
+        private void UpdatePointSizeState(GpuState state)
+        {
+            float size = state.Get<float>(MethodOffset.PointSize);
+
+            _context.Renderer.Pipeline.SetPointSize(size);
+        }
+
         /// <summary>
         /// Updates host primitive restart based on guest GPU state.
         /// </summary>
diff --git a/Ryujinx.Graphics.Gpu/State/MethodOffset.cs b/Ryujinx.Graphics.Gpu/State/MethodOffset.cs
index a89fc3797e..730ff40afa 100644
--- a/Ryujinx.Graphics.Gpu/State/MethodOffset.cs
+++ b/Ryujinx.Graphics.Gpu/State/MethodOffset.cs
@@ -53,6 +53,7 @@ namespace Ryujinx.Graphics.Gpu.State
         YControl                        = 0x4eb,
         FirstVertex                     = 0x50d,
         FirstInstance                   = 0x50e,
+        PointSize                       = 0x546,
         ResetCounter                    = 0x54c,
         RtDepthStencilEnable            = 0x54e,
         ConditionState                  = 0x554,
diff --git a/Ryujinx.Graphics.OpenGL/Pipeline.cs b/Ryujinx.Graphics.OpenGL/Pipeline.cs
index e308becfe6..c2a42370d0 100644
--- a/Ryujinx.Graphics.OpenGL/Pipeline.cs
+++ b/Ryujinx.Graphics.OpenGL/Pipeline.cs
@@ -601,6 +601,11 @@ namespace Ryujinx.Graphics.OpenGL
             _vertexArray.SetIndexBuffer((Buffer)buffer.Buffer);
         }
 
+        public void SetPointSize(float size)
+        {
+            GL.PointSize(size);
+        }
+
         public void SetPrimitiveRestart(bool enable, int index)
         {
             if (!enable)