diff --git a/src/dawn/native/opengl/SwapChainEGL.cpp b/src/dawn/native/opengl/SwapChainEGL.cpp
index 050fedd..42d9488 100644
--- a/src/dawn/native/opengl/SwapChainEGL.cpp
+++ b/src/dawn/native/opengl/SwapChainEGL.cpp
@@ -160,8 +160,6 @@
 }
 
 void SwapChainEGL::DetachFromSurfaceImpl() {
-    DAWN_ASSERT(mTexture == nullptr);
-
     if (mEGLSurface != EGL_NO_SURFACE) {
         Device* device = ToBackend(GetDevice());
         device->GetEGL(false).DestroySurface(device->GetEGLDisplay(), mEGLSurface);
@@ -202,28 +200,34 @@
 
     attribs.push_back(EGL_NONE);
 
-    auto TryCreateSurface = [&]() -> ResultOrError<EGLSurface> {
+    // Note that we cannot use ResultOrError<EGLSurface> as it might not have the required alignment
+    // constraints.
+    auto TryCreateSurface = [&]() -> MaybeError {
         switch (surface->GetType()) {
 #if DAWN_PLATFORM_IS(ANDROID)
             case Surface::Type::AndroidWindow:
-                return egl.CreateWindowSurface(
+                mEGLSurface = egl.CreateWindowSurface(
                     eglDisplay, config,
                     static_cast<ANativeWindow*>(surface->GetAndroidNativeWindow()), attribs.data());
+                return {};
 #endif  // DAWN_PLATFORM_IS(ANDROID)
 #if defined(DAWN_ENABLE_BACKEND_METAL)
             case Surface::Type::MetalLayer:
-                return egl.CreateWindowSurface(eglDisplay, config, surface->GetMetalLayer(),
-                                               attribs.data());
+                mEGLSurface = egl.CreateWindowSurface(eglDisplay, config, surface->GetMetalLayer(),
+                                                      attribs.data());
+                return {};
 #endif  // defined(DAWN_ENABLE_BACKEND_METAL)
 #if DAWN_PLATFORM_IS(WIN32)
             case Surface::Type::WindowsHWND:
-                return egl.CreateWindowSurface(
+                mEGLSurface = egl.CreateWindowSurface(
                     eglDisplay, config, static_cast<HWND>(surface->GetHWND()), attribs.data());
+                return {};
 #endif  // DAWN_PLATFORM_IS(WIN32)
 #if defined(DAWN_USE_X11)
             case Surface::Type::XlibWindow:
-                return egl.CreateWindowSurface(eglDisplay, config, surface->GetXWindow(),
-                                               attribs.data());
+                mEGLSurface = egl.CreateWindowSurface(eglDisplay, config, surface->GetXWindow(),
+                                                      attribs.data());
+                return {};
 #endif  // defined(DAWN_USE_X11)
 
             // TODO(344814083): Add support for creating surfaces using EGL_KHR_platform_base and
@@ -235,7 +239,7 @@
         }
     };
 
-    DAWN_TRY_ASSIGN(mEGLSurface, TryCreateSurface());
+    DAWN_TRY(TryCreateSurface());
     if (mEGLSurface == EGL_NO_SURFACE) {
         return DAWN_FORMAT_INTERNAL_ERROR("Couldn't create an EGLSurface for %s.", surface);
     }
diff --git a/src/dawn/tests/end2end/SurfaceConfigurationValidationTests.cpp b/src/dawn/tests/end2end/SurfaceConfigurationValidationTests.cpp
index b283a33..10b4ae7 100644
--- a/src/dawn/tests/end2end/SurfaceConfigurationValidationTests.cpp
+++ b/src/dawn/tests/end2end/SurfaceConfigurationValidationTests.cpp
@@ -344,6 +344,8 @@
                       D3D12Backend(),
                       MetalBackend(),
                       NullBackend(),
+                      OpenGLBackend(),
+                      OpenGLESBackend(),
                       VulkanBackend());
 
 }  // anonymous namespace
diff --git a/src/dawn/tests/end2end/SurfaceTests.cpp b/src/dawn/tests/end2end/SurfaceTests.cpp
index 9f0a700..d1722be 100644
--- a/src/dawn/tests/end2end/SurfaceTests.cpp
+++ b/src/dawn/tests/end2end/SurfaceTests.cpp
@@ -651,6 +651,8 @@
                       D3D11Backend(),
                       D3D12Backend(),
                       MetalBackend(),
+                      OpenGLBackend(),
+                      OpenGLESBackend(),
                       VulkanBackend());
 
 }  // anonymous namespace
