Copied context property readback from 2.7.1.
diff --git a/src/opengl.c b/src/opengl.c
index 7b97d6e..6d6f24f 100644
--- a/src/opengl.c
+++ b/src/opengl.c
@@ -354,9 +354,36 @@
 {
     parseGLVersion(&window->glMajor, &window->glMinor, &window->glRevision);
 
-    // As these are hard constraints when non-zero, we can simply copy them
-    window->glProfile = wndconfig->glProfile;
-    window->glForward = wndconfig->glForward;
+    // Read back forward-compatibility flag
+    {
+      window->glForward = GL_FALSE;
+
+      if (window->glMajor >= 3)
+      {
+          GLint flags;
+          glGetIntegerv(GL_CONTEXT_FLAGS, &flags);
+
+          if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT)
+              window->glForward = GL_TRUE;
+      }
+    }
+
+    // Read back OpenGL context profile
+    {
+      window->glProfile = 0;
+
+      if (window->glMajor > 3 || (window->glMajor == 3 && window->glMinor >= 2))
+      {
+          GLint mask;
+          glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask);
+
+          if (mask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT)
+              window->glProfile = GLFW_OPENGL_COMPAT_PROFILE;
+          else if (mask & GL_CONTEXT_CORE_PROFILE_BIT)
+              window->glProfile = GLFW_OPENGL_CORE_PROFILE;
+      }
+    }
+
     window->glRobustness = wndconfig->glRobustness;
 
     if (window->glMajor < wndconfig->glMajor ||