diff --git a/src/OpenGL/libEGL/Display.cpp b/src/OpenGL/libEGL/Display.cpp
index a4aacfd..b08fa65 100644
--- a/src/OpenGL/libEGL/Display.cpp
+++ b/src/OpenGL/libEGL/Display.cpp
@@ -46,7 +46,7 @@
 class DisplayImplementation : public Display
 {
 public:
-	DisplayImplementation(void *nativeDisplay) : Display(nativeDisplay) {}
+	DisplayImplementation(EGLDisplay dpy, void *nativeDisplay) : Display(dpy, nativeDisplay) {}
 	~DisplayImplementation() override {}
 
 	Image *getSharedImage(EGLImageKHR name) override
@@ -72,12 +72,12 @@
 		}
 	#endif
 
-	static DisplayImplementation display(nativeDisplay);
+	static DisplayImplementation display(dpy, nativeDisplay);
 
 	return &display;
 }
 
-Display::Display(void *nativeDisplay) : nativeDisplay(nativeDisplay)
+Display::Display(EGLDisplay eglDisplay, void *nativeDisplay) : eglDisplay(eglDisplay), nativeDisplay(nativeDisplay)
 {
 	mMinSwapInterval = 1;
 	mMaxSwapInterval = 1;
@@ -610,6 +610,11 @@
 	return mMaxSwapInterval;
 }
 
+EGLDisplay Display::getEGLDisplay() const
+{
+	return eglDisplay;
+}
+
 void *Display::getNativeDisplay() const
 {
 	return nativeDisplay;
diff --git a/src/OpenGL/libEGL/Display.h b/src/OpenGL/libEGL/Display.h
index ba6b92c..5944d69 100644
--- a/src/OpenGL/libEGL/Display.h
+++ b/src/OpenGL/libEGL/Display.h
@@ -38,7 +38,7 @@
 	class [[clang::lto_visibility_public]] Display
 	{
 	protected:
-		explicit Display(void *nativeDisplay);
+		explicit Display(EGLDisplay eglDisplay, void *nativeDisplay);
 		virtual ~Display() = 0;
 
 	public:
@@ -70,6 +70,7 @@
 		EGLint getMinSwapInterval() const;
 		EGLint getMaxSwapInterval() const;
 
+		EGLDisplay getEGLDisplay() const;
 		void *getNativeDisplay() const;
 
 		EGLImageKHR createSharedImage(Image *image);
@@ -79,6 +80,7 @@
 	private:
 		sw::Format getDisplayFormat() const;
 
+		const EGLDisplay eglDisplay;
 		void *const nativeDisplay;
 
 		EGLint mMaxSwapInterval;
diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp
index c7a4127..3a62da0 100644
--- a/src/OpenGL/libEGL/libEGL.cpp
+++ b/src/OpenGL/libEGL/libEGL.cpp
@@ -862,7 +862,14 @@
 		return success(EGL_NO_DISPLAY);
 	}
 
-	return success(context->getDisplay());
+	egl::Display *display = context->getDisplay();
+
+	if(!display)
+	{
+		return error(EGL_BAD_ACCESS, EGL_NO_DISPLAY);
+	}
+
+	return success(display->getEGLDisplay());
 }
 
 EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
diff --git a/tests/unittests/unittests.cpp b/tests/unittests/unittests.cpp
index d93123b..8861424 100644
--- a/tests/unittests/unittests.cpp
+++ b/tests/unittests/unittests.cpp
@@ -117,7 +117,7 @@
 
 	EGLContext context = eglCreateContext(display, config, NULL, contextAttributes);
 	EXPECT_EQ(EGL_SUCCESS, eglGetError());
-	EXPECT_NE(EGL_NO_SURFACE, surface);
+	EXPECT_NE(EGL_NO_CONTEXT, context);
 
 	success = eglMakeCurrent(display, surface, surface, context);
 	EXPECT_EQ(EGL_SUCCESS, eglGetError());
@@ -125,19 +125,19 @@
 
 	EGLDisplay currentDisplay = eglGetCurrentDisplay();
 	EXPECT_EQ(EGL_SUCCESS, eglGetError());
-	EXPECT_NE(EGL_NO_DISPLAY, currentDisplay);
+	EXPECT_EQ(display, currentDisplay);
 
 	EGLSurface currentDrawSurface = eglGetCurrentSurface(EGL_DRAW);
 	EXPECT_EQ(EGL_SUCCESS, eglGetError());
-	EXPECT_NE(EGL_NO_SURFACE, currentDrawSurface);
+	EXPECT_EQ(surface, currentDrawSurface);
 
 	EGLSurface currentReadSurface = eglGetCurrentSurface(EGL_READ);
 	EXPECT_EQ(EGL_SUCCESS, eglGetError());
-	EXPECT_NE(EGL_NO_SURFACE, currentReadSurface);
+	EXPECT_EQ(surface, currentReadSurface);
 
 	EGLContext currentContext = eglGetCurrentContext();
 	EXPECT_EQ(EGL_SUCCESS, eglGetError());
-	EXPECT_NE(EGL_NO_CONTEXT, currentContext);
+	EXPECT_EQ(context, currentContext);
 
 	EXPECT_EQ((GLenum)GL_NO_ERROR, glGetError());
 
