diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index 4cb1959..5750527 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -1254,8 +1254,24 @@
     ID3D11Buffer *vertexConstantBuffer = vertexExecutable->getConstantBuffer(mDevice, totalRegisterCountVS);
     ID3D11Buffer *pixelConstantBuffer = pixelExecutable->getConstantBuffer(mDevice, totalRegisterCountPS);
 
-    float (*mapVS)[4] = (totalRegisterCountVS > 0 && vertexUniformsDirty) ? new float[totalRegisterCountVS][4] : NULL;
-    float (*mapPS)[4] = (totalRegisterCountPS > 0 && pixelUniformsDirty) ? new float[totalRegisterCountPS][4] : NULL;
+    float (*mapVS)[4] = NULL;
+    float (*mapPS)[4] = NULL;
+
+	if (totalRegisterCountVS > 0 && vertexUniformsDirty)
+	{
+		D3D11_MAPPED_SUBRESOURCE map = {0};
+		HRESULT result = mDeviceContext->Map(vertexConstantBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &map);
+		ASSERT(SUCCEEDED(result));
+		mapVS = (float(*)[4])map.pData;
+	}
+
+	if (totalRegisterCountPS > 0 && pixelUniformsDirty)
+	{
+		D3D11_MAPPED_SUBRESOURCE map = {0};
+		HRESULT result = mDeviceContext->Map(pixelConstantBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &map);
+		ASSERT(SUCCEEDED(result));
+		mapPS = (float(*)[4])map.pData;
+	}
 
     for (gl::UniformArray::iterator uniform_iterator = uniformArray->begin(); uniform_iterator != uniformArray->end(); uniform_iterator++)
     {
@@ -1277,22 +1293,19 @@
         uniform->dirty = false;
     }
 
-    if (vertexConstantBuffer && mapVS)
+    if (mapVS)
     {
-        mDeviceContext->UpdateSubresource(vertexConstantBuffer, 0, NULL, mapVS, 0, 0);
+        mDeviceContext->Unmap(vertexConstantBuffer, 0);
     }
 
-    if (pixelConstantBuffer && mapPS)
+    if (mapPS)
     {
-        mDeviceContext->UpdateSubresource(pixelConstantBuffer, 0, NULL, mapPS, 0, 0);
+        mDeviceContext->Unmap(pixelConstantBuffer, 0);
     }
     
     mDeviceContext->VSSetConstantBuffers(0, 1, &vertexConstantBuffer);
     mDeviceContext->PSSetConstantBuffers(0, 1, &pixelConstantBuffer);
 
-    delete[] mapVS;
-    delete[] mapPS;
-
     // Driver uniforms
     if (!mDriverConstantBufferVS)
     {
@@ -2688,7 +2701,7 @@
         return NULL;
     }
 
-    ID3DBlob *binary = (ID3DBlob*) compileToBinary(infoLog, shaderHLSL, profile, false);
+    ID3DBlob *binary = (ID3DBlob*)compileToBinary(infoLog, shaderHLSL, profile, false);
     if (!binary)
         return NULL;
 
