diff --git a/Auxiliary/DirectXTexEXR.cpp b/Auxiliary/DirectXTexEXR.cpp
index ee3b5a54..cd4655b2 100644
--- a/Auxiliary/DirectXTexEXR.cpp
+++ b/Auxiliary/DirectXTexEXR.cpp
@@ -265,14 +265,25 @@ HRESULT DirectX::GetMetadataFromEXRFile(const wchar_t* szFile, TexMetadata& meta
         const auto dw = file.dataWindow();
 
         const int width = dw.max.x - dw.min.x + 1;
-        const int height = dw.max.y - dw.min.y + 1;
+        int height = dw.max.y - dw.min.y + 1;
+        size_t arraySize = 1;
 
         if (width < 1 || height < 1)
             return E_FAIL;
 
+        if (file.header().find("envmap") != file.header().end())
+        {
+            if (width == height / 6)
+            {
+                height = width;
+                arraySize = 6;
+            }
+        }
+
         metadata.width = static_cast<size_t>(width);
         metadata.height = static_cast<size_t>(height);
-        metadata.depth = metadata.arraySize = metadata.mipLevels = 1;
+        metadata.depth = metadata.mipLevels = 1;
+        metadata.arraySize = arraySize;
         metadata.format = DXGI_FORMAT_R16G16B16A16_FLOAT;
         metadata.dimension = TEX_DIMENSION_TEXTURE2D;
     }
@@ -371,7 +382,7 @@ HRESULT DirectX::LoadFromEXRFile(const wchar_t* szFile, TexMetadata* metadata, S
 
         auto const dw = file.dataWindow();
 
-        int width = dw.max.x - dw.min.x + 1;
+        const int width = dw.max.x - dw.min.x + 1;
         int height = dw.max.y - dw.min.y + 1;
         size_t arraySize = 1;
 
@@ -383,8 +394,8 @@ HRESULT DirectX::LoadFromEXRFile(const wchar_t* szFile, TexMetadata* metadata, S
             if (width == height / 6)
             {
                 height = width;
+                arraySize = 6;
             }
-            arraySize = 6;
         }
 
         if (metadata)