diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl
index 053eee7..db42154 100755
--- a/dlls/opengl32/make_opengl
+++ b/dlls/opengl32/make_opengl
@@ -261,6 +261,9 @@
     if ( $func_ref->[0] eq "glGetString" ) {
 	$wine_func_ref_name = "internal_glGetString";
     }
+    if ( $func_ref->[0] eq "glGetIntegerv" ) {
+	$wine_func_ref_name = "internal_glGetIntegerv";
+    }
     $ret = "$ret$prefix$wine_func_ref_name( $call_arg);\n";
     if ($thread_safe) {
 	$ret = "$ret  LEAVE_GL();\n";
diff --git a/dlls/opengl32/opengl_ext.h b/dlls/opengl32/opengl_ext.h
index a586636..274f8d3 100644
--- a/dlls/opengl32/opengl_ext.h
+++ b/dlls/opengl32/opengl_ext.h
@@ -73,5 +73,6 @@
 extern int extension_registry_size;
 
 const GLubyte* internal_glGetString(GLenum name);
+void internal_glGetIntegerv(GLenum pname, GLint* params);
 
 #endif /* __DLLS_OPENGL32_OPENGL_EXT_H */
diff --git a/dlls/opengl32/opengl_norm.c b/dlls/opengl32/opengl_norm.c
index 0870575..8374a86 100644
--- a/dlls/opengl32/opengl_norm.c
+++ b/dlls/opengl32/opengl_norm.c
@@ -1329,7 +1329,7 @@
 void WINAPI wine_glGetIntegerv( GLenum pname, GLint* params ) {
   TRACE("(%d, %p)\n", pname, params );
   ENTER_GL();
-  glGetIntegerv( pname, params );
+  internal_glGetIntegerv( pname, params );
   LEAVE_GL();
 }
 
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index a086602..d3bff02 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -64,8 +64,9 @@
 typedef struct wine_glcontext {
   HDC hdc;
   Display *display;
-  GLXContext ctx;
   XVisualInfo *vis;
+  GLXFBConfig fb_conf;
+  GLXContext ctx;
   struct wine_glcontext *next;
   struct wine_glcontext *prev;
 } Wine_GLContext;
@@ -186,6 +187,28 @@
   ret->display = display;
   ret->vis = vis;
 
+  {
+    int hdcPF = GetPixelFormat(hdc);
+    int nCfgs_fmt = 0;
+    GLXFBConfig* cfgs_fmt = NULL;
+    GLXFBConfig cur_cfg;
+    int value;
+    int gl_test = 0;
+    cfgs_fmt = glXGetFBConfigs(display, DefaultScreen(display), &nCfgs_fmt);
+    if (NULL == cfgs_fmt || 0 == nCfgs_fmt) {
+      ERR("Cannot get FB Configs, expect problems.\n");
+      return NULL;
+    }
+    cur_cfg = cfgs_fmt[hdcPF - 1];
+    gl_test = glXGetFBConfigAttrib(display, cur_cfg, GLX_FBCONFIG_ID, &value);
+    if (gl_test) {
+      ERR("Failed to retrieve FBCONFIG_ID from GLXFBConfig, expect problems.\n");
+      return NULL;
+    }
+    ret->fb_conf = cur_cfg;
+    XFree(cfgs_fmt);
+  }
+
   TRACE(" creating context %p (GL context creation delayed)\n", ret);
   return (HGLRC) ret;
 }
@@ -442,7 +465,6 @@
   } else {
       Wine_GLContext *ctx = (Wine_GLContext *) hglrc;
       Drawable drawable = get_drawable( hdc );
-
       if (ctx->ctx == NULL) {
 	ctx->ctx = glXCreateContext(ctx->display, ctx->vis, NULL, True);
 	TRACE(" created a delayed OpenGL context (%p) for %p\n", ctx->ctx, ctx->vis);
@@ -799,6 +821,18 @@
   return (const GLubyte *) internal_gl_extensions;
 }
 
+void internal_glGetIntegerv(GLenum pname, GLint* params) {
+  glGetIntegerv(pname, params); 
+  if (pname == GL_ALPHA_BITS) {
+    GLint tmp;
+    GLXContext gl_ctx = glXGetCurrentContext();
+    Wine_GLContext* ret = get_context_from_GLXContext(gl_ctx);
+    glXGetFBConfigAttrib(ret->display, ret->fb_conf, GLX_ALPHA_SIZE, &tmp);
+    TRACE("returns GL_ALPHA_BITS as '%d'\n", tmp);
+    *params = tmp;
+  }
+}
+
 
 /* No need to load any other libraries as according to the ABI, libGL should be self-sufficient and
    include all dependencies
diff --git a/dlls/opengl32/wgl_ext.c b/dlls/opengl32/wgl_ext.c
index c7b7974..72d1e4e 100644
--- a/dlls/opengl32/wgl_ext.c
+++ b/dlls/opengl32/wgl_ext.c
@@ -357,23 +357,23 @@
       break;
     case WGL_RED_BITS_ARB:
       pop = iWGLAttr[++cur];
-      TRACE("pAttr[%d] = GLX_RED_SIZE: %d\n", cur, pop);
       PUSH2(oGLXAttr, GLX_RED_SIZE, pop);
+      TRACE("pAttr[%d] = GLX_RED_SIZE: %d\n", cur, pop);
       break;
     case WGL_GREEN_BITS_ARB:
       pop = iWGLAttr[++cur];
-      TRACE("pAttr[%d] = GLX_GREEN_SIZE: %d\n", cur, pop);
       PUSH2(oGLXAttr, GLX_GREEN_SIZE, pop);
+      TRACE("pAttr[%d] = GLX_GREEN_SIZE: %d\n", cur, pop);
       break;
     case WGL_ALPHA_BITS_ARB:
       pop = iWGLAttr[++cur];
-      TRACE("pAttr[%d] = GLX_ALPHA_SIZE: %d\n", cur, pop);
       PUSH2(oGLXAttr, GLX_ALPHA_SIZE, pop);
+      TRACE("pAttr[%d] = GLX_ALPHA_SIZE: %d\n", cur, pop);
       break;
     case WGL_DEPTH_BITS_ARB:
       pop = iWGLAttr[++cur];
-      TRACE("pAttr[%d] = GLX_DEPTH_SIZE: %d\n", cur, pop);
       PUSH2(oGLXAttr, GLX_DEPTH_SIZE, pop);
+      TRACE("pAttr[%d] = GLX_DEPTH_SIZE: %d\n", cur, pop);
       break;
     case WGL_STENCIL_BITS_ARB:
       pop = iWGLAttr[++cur];
@@ -689,8 +689,11 @@
 	continue ;
       }
       if (fmt_id == tmp_fmt_id) {
+	int tmp;
 	piFormats[pfmt_it] = it_fmt + 1;
 	++pfmt_it;
+	glXGetFBConfigAttrib(display, cfgs_fmt[it_fmt], GLX_ALPHA_SIZE, &tmp);
+	TRACE("for FBCONFIG_ID(%d/%d) found '%d'\n", it_fmt + 1, nCfgs_fmt, tmp);
 	break ;
       }
     }
