Revert "Fix and enable warning C4244 (Conversion from 'type1' to 'type2', possible loss of data)"

Causing a build failure on Mac/Clang:

./Tokenizer.cpp:551:7: error: extra tokens at end of #else directive [-Werror,-Wextra-tokens]
#else if defined(_MSC_VER)

http://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Mac%20Builder/builds/29136

This reverts commit 3b26e231d99154814eb428f75a67bbe7a21adadc.

Change-Id: I2d11ddcc18130d908fd2ec3d6f5ab890cfccd5e7
Reviewed-on: https://chromium-review.googlesource.com/264983
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/common/mathutil.cpp b/src/common/mathutil.cpp
index bb54736..4966336 100644
--- a/src/common/mathutil.cpp
+++ b/src/common/mathutil.cpp
@@ -43,13 +43,13 @@
 
     const float max_c = std::max<float>(std::max<float>(red_c, green_c), blue_c);
     const float exp_p = std::max<float>(-g_sharedexp_bias - 1, floor(log(max_c))) + 1 + g_sharedexp_bias;
-    const int max_s = static_cast<int>(floor((max_c / (pow(2.0f, exp_p - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
-    const int exp_s = static_cast<int>((max_s < pow(2.0f, g_sharedexp_mantissabits)) ? exp_p : exp_p + 1);
+    const int max_s = floor((max_c / (pow(2.0f, exp_p - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f);
+    const int exp_s = (max_s < pow(2.0f, g_sharedexp_mantissabits)) ? exp_p : exp_p + 1;
 
     RGB9E5Data output;
-    output.R = static_cast<unsigned int>(floor((red_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
-    output.G = static_cast<unsigned int>(floor((green_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
-    output.B = static_cast<unsigned int>(floor((blue_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
+    output.R = floor((red_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f);
+    output.G = floor((green_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f);
+    output.B = floor((blue_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f);
     output.E = exp_s;
 
     return *reinterpret_cast<unsigned int*>(&output);
diff --git a/src/common/mathutil.h b/src/common/mathutil.h
index 9f5c9fd..e096b1a 100644
--- a/src/common/mathutil.h
+++ b/src/common/mathutil.h
@@ -155,7 +155,7 @@
 
     if(abs > 0x47FFEFFF)   // Infinity
     {
-        return static_cast<unsigned short>(sign | 0x7FFF);
+        return sign | 0x7FFF;
     }
     else if(abs < 0x38800000)   // Denormal
     {
@@ -171,11 +171,11 @@
             abs = 0;
         }
 
-        return static_cast<unsigned short>(sign | (abs + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
+        return sign | (abs + 0x00000FFF + ((abs >> 13) & 1)) >> 13;
     }
     else
     {
-        return static_cast<unsigned short>(sign | (abs + 0xC8000000 + 0x00000FFF + ((abs >> 13) & 1)) >> 13);
+        return sign | (abs + 0xC8000000 + 0x00000FFF + ((abs >> 13) & 1)) >> 13;
     }
 }
 
@@ -422,14 +422,14 @@
 template <typename T>
 inline T floatToNormalized(float input)
 {
-    return static_cast<T>(std::numeric_limits<T>::max() * input + 0.5f);
+    return std::numeric_limits<T>::max() * input + 0.5f;
 }
 
 template <unsigned int outputBitCount, typename T>
 inline T floatToNormalized(float input)
 {
     static_assert(outputBitCount < (sizeof(T) * 8), "T must have more bits than outputBitCount.");
-    return static_cast<T>(((1 << outputBitCount) - 1) * input + 0.5f);
+    return ((1 << outputBitCount) - 1) * input + 0.5f;
 }
 
 template <unsigned int inputBitCount, unsigned int inputBitStart, typename T>
@@ -493,12 +493,12 @@
 
 inline unsigned int averageFloat11(unsigned int a, unsigned int b)
 {
-    return float32ToFloat11((float11ToFloat32(static_cast<unsigned short>(a)) + float11ToFloat32(static_cast<unsigned short>(b))) * 0.5f);
+    return float32ToFloat11((float11ToFloat32(a) + float11ToFloat32(b)) * 0.5f);
 }
 
 inline unsigned int averageFloat10(unsigned int a, unsigned int b)
 {
-    return float32ToFloat10((float10ToFloat32(static_cast<unsigned short>(a)) + float10ToFloat32(static_cast<unsigned short>(b))) * 0.5f);
+    return float32ToFloat10((float10ToFloat32(a) + float10ToFloat32(b)) * 0.5f);
 }
 
 }
diff --git a/src/compiler/preprocessor/ExpressionParser.cpp b/src/compiler/preprocessor/ExpressionParser.cpp
index 4a90322..616f4d7 100644
--- a/src/compiler/preprocessor/ExpressionParser.cpp
+++ b/src/compiler/preprocessor/ExpressionParser.cpp
@@ -86,7 +86,7 @@
 #pragma GCC diagnostic ignored "-Wuninitialized"
 #endif
 #elif defined(_MSC_VER)
-#pragma warning(disable: 4065 4244 4701 4702)
+#pragma warning(disable: 4065 4701 4702)
 #endif
 
 #include "ExpressionParser.h"
diff --git a/src/compiler/preprocessor/ExpressionParser.y b/src/compiler/preprocessor/ExpressionParser.y
index 0933736..8caf36b 100644
--- a/src/compiler/preprocessor/ExpressionParser.y
+++ b/src/compiler/preprocessor/ExpressionParser.y
@@ -28,7 +28,7 @@
 #pragma GCC diagnostic ignored "-Wuninitialized"
 #endif
 #elif defined(_MSC_VER)
-#pragma warning(disable: 4065 4244 4701 4702)
+#pragma warning(disable: 4065 4701 4702)
 #endif
 
 #include "ExpressionParser.h"
diff --git a/src/compiler/preprocessor/Tokenizer.cpp b/src/compiler/preprocessor/Tokenizer.cpp
index ae16938..713d86d 100644
--- a/src/compiler/preprocessor/Tokenizer.cpp
+++ b/src/compiler/preprocessor/Tokenizer.cpp
@@ -548,8 +548,6 @@
 #if defined(__GNUC__)
 // Triggered by the auto-generated yy_fatal_error function.
 #pragma GCC diagnostic ignored "-Wmissing-noreturn"
-#else if defined(_MSC_VER)
-#pragma warning(disable: 4244)
 #endif
 
 typedef std::string YYSTYPE;
diff --git a/src/compiler/preprocessor/Tokenizer.l b/src/compiler/preprocessor/Tokenizer.l
index 8c0d56d..89cb5c8 100644
--- a/src/compiler/preprocessor/Tokenizer.l
+++ b/src/compiler/preprocessor/Tokenizer.l
@@ -31,8 +31,6 @@
 #if defined(__GNUC__)
 // Triggered by the auto-generated yy_fatal_error function.
 #pragma GCC diagnostic ignored "-Wmissing-noreturn"
-#else if defined(_MSC_VER)
-#pragma warning(disable: 4244)
 #endif
 
 typedef std::string YYSTYPE;
diff --git a/src/compiler/translator/InitializeVariables.cpp b/src/compiler/translator/InitializeVariables.cpp
index 2bb609a..0e3e2eb 100644
--- a/src/compiler/translator/InitializeVariables.cpp
+++ b/src/compiler/translator/InitializeVariables.cpp
@@ -13,7 +13,7 @@
 TIntermConstantUnion *constructFloatConstUnionNode(const TType &type)
 {
     TType myType = type;
-    unsigned char size = static_cast<unsigned char>(myType.getNominalSize());
+    unsigned char size = myType.getNominalSize();
     if (myType.isMatrix())
         size *= size;
     ConstantUnion *u = new ConstantUnion[size];
diff --git a/src/compiler/translator/IntermNode.cpp b/src/compiler/translator/IntermNode.cpp
index 708dcb3..266e3c8 100644
--- a/src/compiler/translator/IntermNode.cpp
+++ b/src/compiler/translator/IntermNode.cpp
@@ -448,13 +448,13 @@
             {
                 mOp = EOpVectorTimesMatrix;
                 setType(TType(basicType, higherPrecision, EvqTemporary,
-                              static_cast<unsigned char>(mRight->getCols()), 1));
+                              mRight->getCols(), 1));
             }
             else
             {
                 mOp = EOpMatrixTimesScalar;
                 setType(TType(basicType, higherPrecision, EvqTemporary,
-                              static_cast<unsigned char>(mRight->getCols()), static_cast<unsigned char>(mRight->getRows())));
+                              mRight->getCols(), mRight->getRows()));
             }
         }
         else if (mLeft->isMatrix() && !mRight->isMatrix())
@@ -463,7 +463,7 @@
             {
                 mOp = EOpMatrixTimesVector;
                 setType(TType(basicType, higherPrecision, EvqTemporary,
-                              static_cast<unsigned char>(mLeft->getRows()), 1));
+                              mLeft->getRows(), 1));
             }
             else
             {
@@ -474,7 +474,7 @@
         {
             mOp = EOpMatrixTimesMatrix;
             setType(TType(basicType, higherPrecision, EvqTemporary,
-                          static_cast<unsigned char>(mRight->getCols()), static_cast<unsigned char>(mLeft->getRows())));
+                          mRight->getCols(), mLeft->getRows()));
         }
         else if (!mLeft->isMatrix() && !mRight->isMatrix())
         {
@@ -486,7 +486,7 @@
             {
                 mOp = EOpVectorTimesScalar;
                 setType(TType(basicType, higherPrecision, EvqTemporary,
-                              static_cast<unsigned char>(nominalSize), 1));
+                              nominalSize, 1));
             }
         }
         else
@@ -529,7 +529,7 @@
         {
             mOp = EOpMatrixTimesMatrixAssign;
             setType(TType(basicType, higherPrecision, EvqTemporary,
-                          static_cast<unsigned char>(mRight->getCols()), static_cast<unsigned char>(mLeft->getRows())));
+                          mRight->getCols(), mLeft->getRows()));
         }
         else if (!mLeft->isMatrix() && !mRight->isMatrix())
         {
@@ -543,7 +543,7 @@
                     return false;
                 mOp = EOpVectorTimesScalarAssign;
                 setType(TType(basicType, higherPrecision, EvqTemporary,
-                              static_cast<unsigned char>(mLeft->getNominalSize()), 1));
+                              mLeft->getNominalSize(), 1));
             }
         }
         else
@@ -613,7 +613,7 @@
             const int secondarySize = std::max(
                 mLeft->getSecondarySize(), mRight->getSecondarySize());
             setType(TType(basicType, higherPrecision, EvqTemporary,
-                          static_cast<unsigned char>(nominalSize), static_cast<unsigned char>(secondarySize)));
+                          nominalSize, secondarySize));
             if (mLeft->isArray())
             {
                 ASSERT(mLeft->getArraySize() == mRight->getArraySize());
@@ -747,8 +747,8 @@
                 }
 
                 // update return type for matrix product
-                returnType.setPrimarySize(static_cast<unsigned char>(resultCols));
-                returnType.setSecondarySize(static_cast<unsigned char>(resultRows));
+                returnType.setPrimarySize(resultCols);
+                returnType.setSecondarySize(resultRows);
             }
             break;
 
@@ -868,7 +868,7 @@
                 }
 
                 returnType = node->getType();
-                returnType.setPrimarySize(static_cast<unsigned char>(matrixRows));
+                returnType.setPrimarySize(matrixRows);
 
                 tempNode = new TIntermConstantUnion(tempConstArray, returnType);
                 tempNode->setLine(getLine());
@@ -903,7 +903,7 @@
                     }
                 }
 
-                returnType.setPrimarySize(static_cast<unsigned char>(matrixCols));
+                returnType.setPrimarySize(matrixCols);
             }
             break;
 
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index fbd0ba8..4387011 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -2163,8 +2163,7 @@
         }
         else
         {
-            indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), EvqTemporary,
-                                       static_cast<unsigned char>(baseExpression->getNominalSize()), static_cast<unsigned char>(baseExpression->getSecondarySize())));
+            indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), EvqTemporary, baseExpression->getNominalSize(), baseExpression->getSecondarySize()));
         }
 
         if (baseExpression->getType().getQualifier() == EvqConst)
@@ -2175,7 +2174,7 @@
     else if (baseExpression->isMatrix())
     {
         TQualifier qualifier = baseExpression->getType().getQualifier() == EvqConst ? EvqConst : EvqTemporary;
-        indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), qualifier, static_cast<unsigned char>(baseExpression->getRows())));
+        indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), qualifier, baseExpression->getRows()));
     }
     else if (baseExpression->isVector())
     {
@@ -2221,7 +2220,7 @@
             }
             else
             {
-                indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), EvqConst, (unsigned char) (fieldString).size()));
+                indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), EvqConst, (int) (fieldString).size()));
             }
         }
         else
@@ -2229,7 +2228,7 @@
             TString vectorString = fieldString;
             TIntermTyped* index = intermediate.addSwizzle(fields, fieldLocation);
             indexedExpression = intermediate.addIndex(EOpVectorSwizzle, baseExpression, index, dotLocation);
-            indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), EvqTemporary, (unsigned char) vectorString.size()));
+            indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(), EvqTemporary, (int) vectorString.size()));
         }
     }
     else if (baseExpression->isMatrix())
@@ -2252,8 +2251,7 @@
             unionArray->setIConst(0);
             TIntermTyped* index = intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), fieldLocation);
             indexedExpression = intermediate.addIndex(EOpIndexDirect, baseExpression, index, dotLocation);
-            indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(),EvqTemporary,
-                                       static_cast<unsigned char>(baseExpression->getCols()), static_cast<unsigned char>(baseExpression->getRows())));
+            indexedExpression->setType(TType(baseExpression->getBasicType(), baseExpression->getPrecision(),EvqTemporary, baseExpression->getCols(), baseExpression->getRows()));
         }
         else
         {
diff --git a/src/compiler/translator/SymbolTable.cpp b/src/compiler/translator/SymbolTable.cpp
index 9525040..0eb663f 100644
--- a/src/compiler/translator/SymbolTable.cpp
+++ b/src/compiler/translator/SymbolTable.cpp
@@ -152,10 +152,10 @@
 
     switch(type->getBasicType())
     {
-      case EbtGenType:  return new TType(EbtFloat, static_cast<unsigned char>(size));
-      case EbtGenIType: return new TType(EbtInt, static_cast<unsigned char>(size));
-      case EbtGenUType: return new TType(EbtUInt, static_cast<unsigned char>(size));
-      case EbtGenBType: return new TType(EbtBool, static_cast<unsigned char>(size));
+      case EbtGenType:  return new TType(EbtFloat, size);
+      case EbtGenIType: return new TType(EbtInt, size);
+      case EbtGenUType: return new TType(EbtUInt, size);
+      case EbtGenBType: return new TType(EbtBool, size);
       default: return type;
     }
 }
@@ -173,10 +173,10 @@
 
     switch(type->getBasicType())
     {
-      case EbtVec:  return new TType(EbtFloat, static_cast<unsigned char>(size));
-      case EbtIVec: return new TType(EbtInt, static_cast<unsigned char>(size));
-      case EbtUVec: return new TType(EbtUInt, static_cast<unsigned char>(size));
-      case EbtBVec: return new TType(EbtBool, static_cast<unsigned char>(size));
+      case EbtVec:  return new TType(EbtFloat, size);
+      case EbtIVec: return new TType(EbtInt, size);
+      case EbtUVec: return new TType(EbtUInt, size);
+      case EbtBVec: return new TType(EbtBool, size);
       default: return type;
     }
 }
diff --git a/src/compiler/translator/glslang.l b/src/compiler/translator/glslang.l
index 023ac5b..ee4d28b 100644
--- a/src/compiler/translator/glslang.l
+++ b/src/compiler/translator/glslang.l
@@ -30,7 +30,6 @@
 #elif defined(_MSC_VER)
 #pragma warning(disable: 4065)
 #pragma warning(disable: 4189)
-#pragma warning(disable: 4244)
 #pragma warning(disable: 4505)
 #pragma warning(disable: 4701)
 #pragma warning(disable: 4702)
diff --git a/src/compiler/translator/glslang.y b/src/compiler/translator/glslang.y
index cc2fa4c..8af9633 100644
--- a/src/compiler/translator/glslang.y
+++ b/src/compiler/translator/glslang.y
@@ -30,7 +30,6 @@
 #elif defined(_MSC_VER)
 #pragma warning(disable: 4065)
 #pragma warning(disable: 4189)
-#pragma warning(disable: 4244)
 #pragma warning(disable: 4505)
 #pragma warning(disable: 4701)
 #pragma warning(disable: 4702)
diff --git a/src/compiler/translator/glslang_lex.cpp b/src/compiler/translator/glslang_lex.cpp
index 600d8bd..66d3df9 100644
--- a/src/compiler/translator/glslang_lex.cpp
+++ b/src/compiler/translator/glslang_lex.cpp
@@ -15,7 +15,6 @@
 #elif defined(_MSC_VER)
 #pragma warning(disable: 4065)
 #pragma warning(disable: 4189)
-#pragma warning(disable: 4244)
 #pragma warning(disable: 4505)
 #pragma warning(disable: 4701)
 #pragma warning(disable: 4702)
diff --git a/src/compiler/translator/glslang_tab.cpp b/src/compiler/translator/glslang_tab.cpp
index 50e2319..5ea6852 100644
--- a/src/compiler/translator/glslang_tab.cpp
+++ b/src/compiler/translator/glslang_tab.cpp
@@ -80,7 +80,6 @@
 #elif defined(_MSC_VER)
 #pragma warning(disable: 4065)
 #pragma warning(disable: 4189)
-#pragma warning(disable: 4244)
 #pragma warning(disable: 4505)
 #pragma warning(disable: 4701)
 #pragma warning(disable: 4702)
diff --git a/src/libANGLE/Buffer.cpp b/src/libANGLE/Buffer.cpp
index 623b411..621d8d2 100644
--- a/src/libANGLE/Buffer.cpp
+++ b/src/libANGLE/Buffer.cpp
@@ -57,7 +57,7 @@
         return error;
     }
 
-    mIndexRangeCache.invalidateRange(static_cast<unsigned int>(offset), static_cast<unsigned int>(size));
+    mIndexRangeCache.invalidateRange(offset, size);
 
     return error;
 }
@@ -70,7 +70,7 @@
         return error;
     }
 
-    mIndexRangeCache.invalidateRange(static_cast<unsigned int>(destOffset), static_cast<unsigned int>(size));
+    mIndexRangeCache.invalidateRange(destOffset, size);
 
     return error;
 }
@@ -94,7 +94,7 @@
     mAccess = access;
     mAccessFlags = GL_MAP_WRITE_BIT;
 
-    mIndexRangeCache.invalidateRange(0, static_cast<unsigned int>(mMapLength));
+    mIndexRangeCache.invalidateRange(0, mMapLength);
 
     return error;
 }
@@ -124,7 +124,7 @@
 
     if ((access & GL_MAP_WRITE_BIT) > 0)
     {
-        mIndexRangeCache.invalidateRange(static_cast<unsigned int>(offset), static_cast<unsigned int>(length));
+        mIndexRangeCache.invalidateRange(offset, length);
     }
 
     return error;
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 341f7e3..5ea039f 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -339,7 +339,7 @@
     // wait commands finish. However, since the name becomes invalid, we cannot query the fence,
     // and since our API is currently designed for being called from a single thread, we can delete
     // the fence immediately.
-    mResourceManager->deleteFenceSync(static_cast<GLuint>(reinterpret_cast<uintptr_t>(fenceSync)));
+    mResourceManager->deleteFenceSync(reinterpret_cast<uintptr_t>(fenceSync));
 }
 
 void Context::deleteVertexArray(GLuint vertexArray)
@@ -445,7 +445,7 @@
 
 FenceSync *Context::getFenceSync(GLsync handle) const
 {
-    return mResourceManager->getFenceSync(static_cast<GLuint>(reinterpret_cast<uintptr_t>(handle)));
+    return mResourceManager->getFenceSync(reinterpret_cast<uintptr_t>(handle));
 }
 
 VertexArray *Context::getVertexArray(GLuint handle) const
diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
index f75c230..15274c6 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -982,7 +982,7 @@
 {
     ASSERT(static_cast<size_t>(index) < mTransformFeedbackBuffers.size());
 
-    return static_cast<unsigned int>(mTransformFeedbackBuffers[index].getOffset());
+    return mTransformFeedbackBuffers[index].getOffset();
 }
 
 size_t State::getTransformFeedbackBufferIndexRange() const
diff --git a/src/libANGLE/queryconversions.cpp b/src/libANGLE/queryconversions.cpp
index 13150c2..460e346 100644
--- a/src/libANGLE/queryconversions.cpp
+++ b/src/libANGLE/queryconversions.cpp
@@ -40,7 +40,7 @@
         }
         else
         {
-            return gl::iround<QueryT>(static_cast<GLfloat>(value));
+            return gl::iround<QueryT>(value);
         }
     }
 
@@ -66,7 +66,7 @@
       case GL_INT:              return CastStateValueToInt<QueryT, NativeT>(pname, value);
       case GL_INT_64_ANGLEX:    return CastStateValueToInt<QueryT, NativeT>(pname, value);
       case GL_FLOAT:            return static_cast<QueryT>(value);
-      case GL_BOOL:             return static_cast<QueryT>(value == static_cast<NativeT>(0) ? GL_FALSE : GL_TRUE);
+      case GL_BOOL:             return (value == static_cast<NativeT>(0) ? GL_FALSE : GL_TRUE);
       default: UNREACHABLE();   return 0;
     }
 }
diff --git a/src/libANGLE/renderer/IndexRangeCache.cpp b/src/libANGLE/renderer/IndexRangeCache.cpp
index 84017b6..4a71cf4 100644
--- a/src/libANGLE/renderer/IndexRangeCache.cpp
+++ b/src/libANGLE/renderer/IndexRangeCache.cpp
@@ -100,7 +100,7 @@
 }
 
 IndexRangeCache::IndexRange::IndexRange(GLenum typ, intptr_t off, GLsizei c)
-    : type(typ), offset(static_cast<unsigned int>(off)), count(c)
+    : type(typ), offset(off), count(c)
 {
 }
 
diff --git a/src/libANGLE/renderer/d3d/DynamicHLSL.cpp b/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
index 19450ec..0dbc30a 100644
--- a/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
+++ b/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
@@ -1161,8 +1161,8 @@
                 "    float2(0.0f, 0.0f)\n"
                 "};\n"
                 "\n"
-                "static float minPointSize = " + Str(static_cast<int>(mRenderer->getRendererCaps().minAliasedPointSize)) + ".0f;\n"
-                "static float maxPointSize = " + Str(static_cast<int>(mRenderer->getRendererCaps().maxAliasedPointSize)) + ".0f;\n"
+                "static float minPointSize = " + Str(mRenderer->getRendererCaps().minAliasedPointSize) + ".0f;\n"
+                "static float maxPointSize = " + Str(mRenderer->getRendererCaps().maxAliasedPointSize) + ".0f;\n"
                 "\n"
                 "[maxvertexcount(4)]\n"
                 "void main(point GS_INPUT input[1], inout TriangleStream<GS_OUTPUT> outStream)\n"
diff --git a/src/libANGLE/renderer/d3d/TextureD3D.cpp b/src/libANGLE/renderer/d3d/TextureD3D.cpp
index 184cda2..78b03f2 100644
--- a/src/libANGLE/renderer/d3d/TextureD3D.cpp
+++ b/src/libANGLE/renderer/d3d/TextureD3D.cpp
@@ -337,7 +337,7 @@
 
     uintptr_t offset = reinterpret_cast<uintptr_t>(pixels);
 
-    gl::Error error = mRenderer->fastCopyBufferToTexture(unpack, static_cast<unsigned int>(offset), destRenderTarget, sizedInternalFormat, type, destArea);
+    gl::Error error = mRenderer->fastCopyBufferToTexture(unpack, offset, destRenderTarget, sizedInternalFormat, type, destArea);
     if (error.isError())
     {
         return error;
diff --git a/src/libANGLE/renderer/d3d/VertexDataManager.cpp b/src/libANGLE/renderer/d3d/VertexDataManager.cpp
index 91770dc..cb70b9e 100644
--- a/src/libANGLE/renderer/d3d/VertexDataManager.cpp
+++ b/src/libANGLE/renderer/d3d/VertexDataManager.cpp
@@ -291,7 +291,7 @@
     if (directStorage)
     {
         outputElementSize = ComputeVertexAttributeStride(attrib);
-        streamOffset = static_cast<unsigned int>(attrib.offset + outputElementSize * firstVertexIndex);
+        streamOffset = attrib.offset + outputElementSize * firstVertexIndex;
     }
     else if (staticBuffer)
     {
diff --git a/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp b/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp
index 184fc04..e38b617 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp
@@ -479,8 +479,8 @@
     D3D11_VIEWPORT viewport;
     viewport.TopLeftX = 0;
     viewport.TopLeftY = 0;
-    viewport.Width = static_cast<FLOAT>(size.width);
-    viewport.Height = static_cast<FLOAT>(size.height);
+    viewport.Width = size.width;
+    viewport.Height = size.height;
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     deviceContext->RSSetViewports(1, &viewport);
@@ -596,8 +596,8 @@
     D3D11_VIEWPORT viewport;
     viewport.TopLeftX = 0;
     viewport.TopLeftY = 0;
-    viewport.Width = static_cast<FLOAT>(destSize.width);
-    viewport.Height = static_cast<FLOAT>(destSize.height);
+    viewport.Width = destSize.width;
+    viewport.Height = destSize.height;
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     deviceContext->RSSetViewports(1, &viewport);
@@ -710,8 +710,8 @@
     D3D11_VIEWPORT viewport;
     viewport.TopLeftX = 0;
     viewport.TopLeftY = 0;
-    viewport.Width = static_cast<FLOAT>(destSize.width);
-    viewport.Height = static_cast<FLOAT>(destSize.height);
+    viewport.Width = destSize.width;
+    viewport.Height = destSize.height;
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     deviceContext->RSSetViewports(1, &viewport);
@@ -826,7 +826,7 @@
         float yPerc = static_cast<float>(y - destArea.y) / (destArea.height - 1);
 
         // Interpolate using the original source rectangle to determine which row to sample from while clamping to the edges
-        unsigned int readRow = static_cast<unsigned int>(gl::clamp(sourceArea.y + floor(yPerc * (sourceArea.height - 1) + 0.5f), 0, sourceSize.height - 1));
+        unsigned int readRow = gl::clamp(sourceArea.y + floor(yPerc * (sourceArea.height - 1) + 0.5f), 0, sourceSize.height - 1);
         unsigned int writeRow = y;
 
         if (wholeRowCopy)
@@ -848,7 +848,7 @@
                 float xPerc = static_cast<float>(x - destArea.x) / (destArea.width - 1);
 
                 // Interpolate the original source rectangle to determine which column to sample from while clamping to the edges
-                unsigned int readColumn = static_cast<unsigned int>(gl::clamp(sourceArea.x + floor(xPerc * (sourceArea.width - 1) + 0.5f), 0, sourceSize.width - 1));
+                unsigned int readColumn = gl::clamp(sourceArea.x + floor(xPerc * (sourceArea.width - 1) + 0.5f), 0, sourceSize.width - 1);
                 unsigned int writeColumn = x;
 
                 void *sourcePixel = reinterpret_cast<char*>(sourceMapping.pData) +
diff --git a/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp b/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
index 0f2878a..2ff2414 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
@@ -934,7 +934,7 @@
         // Constant buffers must be of a limited size, and aligned to 16 byte boundaries
         // For our purposes we ignore any buffer data past the maximum constant buffer size
         bufferDesc->ByteWidth = roundUp(bufferDesc->ByteWidth, 16u);
-        bufferDesc->ByteWidth = std::min<UINT>(bufferDesc->ByteWidth, static_cast<UINT>(renderer->getRendererCaps().maxUniformBlockSize));
+        bufferDesc->ByteWidth = std::min<UINT>(bufferDesc->ByteWidth, renderer->getRendererCaps().maxUniformBlockSize);
         break;
 
       default:
diff --git a/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp b/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
index 8ccc315..ae373f5 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
@@ -469,8 +469,8 @@
         D3D11_VIEWPORT viewport;
         viewport.TopLeftX = 0;
         viewport.TopLeftY = 0;
-        viewport.Width = static_cast<FLOAT>(framebufferSize.width);
-        viewport.Height = static_cast<FLOAT>(framebufferSize.height);
+        viewport.Width = framebufferSize.width;
+        viewport.Height = framebufferSize.height;
         viewport.MinDepth = 0;
         viewport.MaxDepth = 1;
         deviceContext->RSSetViewports(1, &viewport);
diff --git a/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp b/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp
index 755d00c..f978b45 100644
--- a/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp
@@ -413,7 +413,7 @@
     static const unsigned int seed = 0xDEADBEEF;
 
     std::size_t hash = 0;
-    MurmurHash3_x86_32(inputLayout.begin(), static_cast<int>(inputLayout.end() - inputLayout.begin()), seed, &hash);
+    MurmurHash3_x86_32(inputLayout.begin(), inputLayout.end() - inputLayout.begin(), seed, &hash);
     return hash;
 }
 
diff --git a/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp b/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp
index fcaecad..f566140 100644
--- a/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp
@@ -249,8 +249,8 @@
     D3D11_VIEWPORT viewport;
     viewport.TopLeftX = 0;
     viewport.TopLeftY = 0;
-    viewport.Width = static_cast<FLOAT>(destSize.width);
-    viewport.Height = static_cast<FLOAT>(destSize.height);
+    viewport.Width = destSize.width;
+    viewport.Height = destSize.height;
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     deviceContext->RSSetViewports(1, &viewport);
diff --git a/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp b/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp
index a4d8837..4990e6b 100644
--- a/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp
@@ -416,7 +416,7 @@
         samplerDesc.AddressV = gl_d3d11::ConvertTextureWrap(samplerState.wrapT);
         samplerDesc.AddressW = gl_d3d11::ConvertTextureWrap(samplerState.wrapR);
         samplerDesc.MipLODBias = 0;
-        samplerDesc.MaxAnisotropy = static_cast<UINT>(samplerState.maxAnisotropy);
+        samplerDesc.MaxAnisotropy = samplerState.maxAnisotropy;
         samplerDesc.ComparisonFunc = gl_d3d11::ConvertComparison(samplerState.compareFunc);
         samplerDesc.BorderColor[0] = 0.0f;
         samplerDesc.BorderColor[1] = 0.0f;
diff --git a/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
index 863204c..4b6a64d 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
@@ -149,11 +149,11 @@
     ASSERT(offset % 256 == 0);
 
     // firstConstant and numConstants are expressed in constants of 16-bytes. Furthermore they must be a multiple of 16 constants.
-    *outFirstConstant = static_cast<UINT>(offset / 16);
+    *outFirstConstant = offset / 16;
 
     // The GL size is not required to be aligned to a 256 bytes boundary.
     // Round the size up to a 256 bytes boundary then express the results in constants of 16-bytes.
-    *outNumConstants = static_cast<UINT>(rx::roundUp(size, static_cast<GLsizeiptr>(256)) / 16);
+    *outNumConstants = rx::roundUp(size, static_cast<GLsizeiptr>(256)) / 16;
 
     // Since the size is rounded up, firstConstant + numConstants may be bigger than the actual size of the buffer.
     // This behaviour is explictly allowed according to the documentation on ID3D11DeviceContext1::PSSetConstantBuffers1
@@ -2761,8 +2761,8 @@
                         entry.SemanticName = varying.semanticName.c_str();
                         entry.SemanticIndex = varying.semanticIndex + j;
                         entry.StartComponent = 0;
-                        entry.ComponentCount = static_cast<BYTE>(gl::VariableColumnCount(transposedType));
-                        entry.OutputSlot = static_cast<BYTE>((separatedOutputBuffers ? i : 0));
+                        entry.ComponentCount = gl::VariableColumnCount(transposedType);
+                        entry.OutputSlot = (separatedOutputBuffers ? i : 0);
                         soDeclaration.push_back(entry);
                     }
                 }
diff --git a/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
index c8c6915..7ae6a6a 100644
--- a/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
@@ -577,8 +577,8 @@
     D3D11_VIEWPORT viewport;
     viewport.TopLeftX = 0;
     viewport.TopLeftY = 0;
-    viewport.Width = static_cast<FLOAT>(mWidth);
-    viewport.Height = static_cast<FLOAT>(mHeight);
+    viewport.Width = mWidth;
+    viewport.Height = mHeight;
     viewport.MinDepth = 0.0f;
     viewport.MaxDepth = 1.0f;
     deviceContext->RSSetViewports(1, &viewport);
diff --git a/src/libANGLE/renderer/d3d/d3d11/copyvertex.inl b/src/libANGLE/renderer/d3d/d3d11/copyvertex.inl
index 1ec21de..60678d7 100644
--- a/src/libANGLE/renderer/d3d/d3d11/copyvertex.inl
+++ b/src/libANGLE/renderer/d3d/d3d11/copyvertex.inl
@@ -245,17 +245,17 @@
 
             if (data & rgbSignMask)
             {
-                *intOutput = static_cast<GLshort>(data | negativeMask);
+                *intOutput = data | negativeMask;
             }
             else
             {
-                *intOutput = static_cast<GLshort>(data);
+                *intOutput = data;
             }
         }
         else
         {
             GLushort *uintOutput = reinterpret_cast<GLushort*>(output);
-            *uintOutput = static_cast<GLushort>(data);
+            *uintOutput = data;
         }
     }
 }
diff --git a/src/libANGLE/renderer/d3d/d3d9/Image9.cpp b/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
index be53403..3ea9ea2 100644
--- a/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
+++ b/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
@@ -661,9 +661,9 @@
                 for (int x = 0; x < width; x++)
                 {
                     unsigned short rgb = ((unsigned short*)sourcePixels)[x];
-                    unsigned char red = static_cast<unsigned char>((rgb & 0xF800) >> 8);
-                    unsigned char green = static_cast<unsigned char>((rgb & 0x07E0) >> 3);
-                    unsigned char blue = static_cast<unsigned char>((rgb & 0x001F) << 3);
+                    unsigned char red = (rgb & 0xF800) >> 8;
+                    unsigned char green = (rgb & 0x07E0) >> 3;
+                    unsigned char blue = (rgb & 0x001F) << 3;
                     destPixels[x + 0] = blue | (blue >> 5);
                     destPixels[x + 1] = green | (green >> 6);
                     destPixels[x + 2] = red | (red >> 5);
@@ -698,9 +698,9 @@
                 for (int x = 0; x < width; x++)
                 {
                     unsigned short argb = ((unsigned short*)sourcePixels)[x];
-                    unsigned char red = static_cast<unsigned char>((argb & 0x7C00) >> 7);
-                    unsigned char green = static_cast<unsigned char>((argb & 0x03E0) >> 2);
-                    unsigned char blue = static_cast<unsigned char>((argb & 0x001F) << 3);
+                    unsigned char red = (argb & 0x7C00) >> 7;
+                    unsigned char green = (argb & 0x03E0) >> 2;
+                    unsigned char blue = (argb & 0x001F) << 3;
                     destPixels[x + 0] = blue | (blue >> 5);
                     destPixels[x + 1] = green | (green >> 5);
                     destPixels[x + 2] = red | (red >> 5);
@@ -716,9 +716,9 @@
                 for (int x = 0; x < width; x++)
                 {
                     unsigned short argb = ((unsigned short*)sourcePixels)[x];
-                    unsigned char red = static_cast<unsigned char>((argb & 0x7C00) >> 7);
-                    unsigned char green = static_cast<unsigned char>((argb & 0x03E0) >> 2);
-                    unsigned char blue = static_cast<unsigned char>((argb & 0x001F) << 3);
+                    unsigned char red = (argb & 0x7C00) >> 7;
+                    unsigned char green = (argb & 0x03E0) >> 2;
+                    unsigned char blue = (argb & 0x001F) << 3;
                     unsigned char alpha = (signed short)argb >> 15;
                     destPixels[x + 0] = blue | (blue >> 5);
                     destPixels[x + 1] = green | (green >> 5);
diff --git a/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp b/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
index 52c7714..dac6ea2 100644
--- a/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
+++ b/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
@@ -1657,7 +1657,7 @@
           case GL_NONE:   // Non-indexed draw
             for (int i = 0; i < count; i++)
             {
-                data[i] = static_cast<unsigned short>(i);
+                data[i] = i;
             }
             data[count] = 0;
             break;
@@ -1678,9 +1678,9 @@
           case GL_UNSIGNED_INT:
             for (int i = 0; i < count; i++)
             {
-                data[i] = static_cast<unsigned short>(static_cast<const GLuint*>(indices)[i]);
+                data[i] = static_cast<const GLuint*>(indices)[i];
             }
-            data[count] = static_cast<unsigned short>(static_cast<const GLuint*>(indices)[0]);
+            data[count] = static_cast<const GLuint*>(indices)[0];
             break;
           default: UNREACHABLE();
         }
@@ -1769,7 +1769,7 @@
             unsigned short *data = reinterpret_cast<unsigned short*>(mappedMemory);
             for (size_t i = 0; i < count; i++)
             {
-                data[i] = static_cast<unsigned short>(i);
+                data[i] = i;
             }
 
             error = mCountingIB->unmapBuffer();
diff --git a/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp b/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp
index 74af905..7e079fb 100644
--- a/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp
+++ b/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp
@@ -150,12 +150,12 @@
             gl::VertexFormat vertexFormat(*attributes[i].attribute, GL_FLOAT);
             const d3d9::VertexFormat &d3d9VertexInfo = d3d9::GetVertexFormatInfo(caps.DeclTypes, vertexFormat);
 
-            element->Stream = static_cast<WORD>(stream);
+            element->Stream = stream;
             element->Offset = 0;
-            element->Type = static_cast<BYTE>(d3d9VertexInfo.nativeFormat);
+            element->Type = d3d9VertexInfo.nativeFormat;
             element->Method = D3DDECLMETHOD_DEFAULT;
             element->Usage = D3DDECLUSAGE_TEXCOORD;
-            element->UsageIndex = static_cast<BYTE>(program->getSemanticIndex(i));
+            element->UsageIndex = program->getSemanticIndex(i);
             element++;
         }
     }
diff --git a/src/libANGLE/renderer/d3d/imageformats.h b/src/libANGLE/renderer/d3d/imageformats.h
index 123359c..e0f9a16 100644
--- a/src/libANGLE/renderer/d3d/imageformats.h
+++ b/src/libANGLE/renderer/d3d/imageformats.h
@@ -1013,7 +1013,7 @@
 
     static void average(R8S *dst, const R8S *src1, const R8S *src2)
     {
-        dst->R = static_cast<char>(gl::average(src1->R, src2->R));
+        dst->R = gl::average(src1->R, src2->R);
     }
 };
 
@@ -1052,8 +1052,8 @@
 
     static void average(R8G8S *dst, const R8G8S *src1, const R8G8S *src2)
     {
-        dst->R = static_cast<char>(gl::average(src1->R, src2->R));
-        dst->G = static_cast<char>(gl::average(src1->G, src2->G));
+        dst->R = gl::average(src1->R, src2->R);
+        dst->G = gl::average(src1->G, src2->G);
     }
 };
 
@@ -1095,9 +1095,9 @@
 
     static void average(R8G8B8S *dst, const R8G8B8S *src1, const R8G8B8S *src2)
     {
-        dst->R = static_cast<char>(gl::average(src1->R, src2->R));
-        dst->G = static_cast<char>(gl::average(src1->G, src2->G));
-        dst->B = static_cast<char>(gl::average(src1->B, src2->B));
+        dst->R = gl::average(src1->R, src2->R);
+        dst->G = gl::average(src1->G, src2->G);
+        dst->B = gl::average(src1->B, src2->B);
     }
 };
 
@@ -1142,10 +1142,10 @@
 
     static void average(R8G8B8A8S *dst, const R8G8B8A8S *src1, const R8G8B8A8S *src2)
     {
-        dst->R = static_cast<char>(gl::average(src1->R, src2->R));
-        dst->G = static_cast<char>(gl::average(src1->G, src2->G));
-        dst->B = static_cast<char>(gl::average(src1->B, src2->B));
-        dst->A = static_cast<char>(gl::average(src1->A, src2->A));
+        dst->R = gl::average(src1->R, src2->R);
+        dst->G = gl::average(src1->G, src2->G);
+        dst->B = gl::average(src1->B, src2->B);
+        dst->A = gl::average(src1->A, src2->A);
     }
 };
 
diff --git a/src/libANGLE/renderer/d3d/loadimage.cpp b/src/libANGLE/renderer/d3d/loadimage.cpp
index 4560bd0..172832b 100644
--- a/src/libANGLE/renderer/d3d/loadimage.cpp
+++ b/src/libANGLE/renderer/d3d/loadimage.cpp
@@ -298,9 +298,9 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t rgb = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((rgb & 0x001F) << 3) | ((rgb & 0x001F) >> 2));
-                dest[4 * x + 1] = static_cast<uint8_t>(((rgb & 0x07E0) >> 3) | ((rgb & 0x07E0) >> 9));
-                dest[4 * x + 2] = static_cast<uint8_t>(((rgb & 0xF800) >> 8) | ((rgb & 0xF800) >> 13));
+                dest[4 * x + 0] = ((rgb & 0x001F) << 3) | ((rgb & 0x001F) >> 2);
+                dest[4 * x + 1] = ((rgb & 0x07E0) >> 3) | ((rgb & 0x07E0) >> 9);
+                dest[4 * x + 2] = ((rgb & 0xF800) >> 8) | ((rgb & 0xF800) >> 13);
                 dest[4 * x + 3] = 0xFF;
             }
         }
@@ -320,9 +320,9 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t rgb = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((rgb & 0xF800) >> 8) | ((rgb & 0xF800) >> 13));
-                dest[4 * x + 1] = static_cast<uint8_t>(((rgb & 0x07E0) >> 3) | ((rgb & 0x07E0) >> 9));
-                dest[4 * x + 2] = static_cast<uint8_t>(((rgb & 0x001F) << 3) | ((rgb & 0x001F) >> 2));
+                dest[4 * x + 0] = ((rgb & 0xF800) >> 8) | ((rgb & 0xF800) >> 13);
+                dest[4 * x + 1] = ((rgb & 0x07E0) >> 3) | ((rgb & 0x07E0) >> 9);
+                dest[4 * x + 2] = ((rgb & 0x001F) << 3) | ((rgb & 0x001F) >> 2);
                 dest[4 * x + 3] = 0xFF;
             }
         }
@@ -361,10 +361,10 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t rgba = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((rgba & 0x00F0) << 0) | ((rgba & 0x00F0) >> 4));
-                dest[4 * x + 1] = static_cast<uint8_t>(((rgba & 0x0F00) >> 4) | ((rgba & 0x0F00) >> 8));
-                dest[4 * x + 2] = static_cast<uint8_t>(((rgba & 0xF000) >> 8) | ((rgba & 0xF000) >> 12));
-                dest[4 * x + 3] = static_cast<uint8_t>(((rgba & 0x000F) << 4) | ((rgba & 0x000F) >> 0));
+                dest[4 * x + 0] = ((rgba & 0x00F0) << 0) | ((rgba & 0x00F0) >> 4);
+                dest[4 * x + 1] = ((rgba & 0x0F00) >> 4) | ((rgba & 0x0F00) >> 8);
+                dest[4 * x + 2] = ((rgba & 0xF000) >> 8) | ((rgba & 0xF000) >> 12);
+                dest[4 * x + 3] = ((rgba & 0x000F) << 4) | ((rgba & 0x000F) >> 0);
             }
         }
     }
@@ -383,10 +383,10 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t rgba = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((rgba & 0xF000) >> 8) | ((rgba & 0xF000) >> 12));
-                dest[4 * x + 1] = static_cast<uint8_t>(((rgba & 0x0F00) >> 4) | ((rgba & 0x0F00) >> 8));
-                dest[4 * x + 2] = static_cast<uint8_t>(((rgba & 0x00F0) << 0) | ((rgba & 0x00F0) >> 4));
-                dest[4 * x + 3] = static_cast<uint8_t>(((rgba & 0x000F) << 4) | ((rgba & 0x000F) >> 0));
+                dest[4 * x + 0] = ((rgba & 0xF000) >> 8) | ((rgba & 0xF000) >> 12);
+                dest[4 * x + 1] = ((rgba & 0x0F00) >> 4) | ((rgba & 0x0F00) >> 8);
+                dest[4 * x + 2] = ((rgba & 0x00F0) << 0) | ((rgba & 0x00F0) >> 4);
+                dest[4 * x + 3] = ((rgba & 0x000F) << 4) | ((rgba & 0x000F) >> 0);
             }
         }
     }
@@ -405,10 +405,10 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t bgra = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((bgra & 0xF000) >> 8) | ((bgra & 0xF000) >> 12));
-                dest[4 * x + 1] = static_cast<uint8_t>(((bgra & 0x0F00) >> 4) | ((bgra & 0x0F00) >> 8));
-                dest[4 * x + 2] = static_cast<uint8_t>(((bgra & 0x00F0) << 0) | ((bgra & 0x00F0) >> 4));
-                dest[4 * x + 3] = static_cast<uint8_t>(((bgra & 0x000F) << 4) | ((bgra & 0x000F) >> 0));
+                dest[4 * x + 0] = ((bgra & 0xF000) >> 8) | ((bgra & 0xF000) >> 12);
+                dest[4 * x + 1] = ((bgra & 0x0F00) >> 4) | ((bgra & 0x0F00) >> 8);
+                dest[4 * x + 2] = ((bgra & 0x00F0) << 0) | ((bgra & 0x00F0) >> 4);
+                dest[4 * x + 3] = ((bgra & 0x000F) << 4) | ((bgra & 0x000F) >> 0);
             }
         }
     }
@@ -427,10 +427,10 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t rgba = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((rgba & 0x003E) << 2) | ((rgba & 0x003E) >> 3));
-                dest[4 * x + 1] = static_cast<uint8_t>(((rgba & 0x07C0) >> 3) | ((rgba & 0x07C0) >> 8));
-                dest[4 * x + 2] = static_cast<uint8_t>(((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13));
-                dest[4 * x + 3] = static_cast<uint8_t>((rgba & 0x0001) ? 0xFF : 0);
+                dest[4 * x + 0] = ((rgba & 0x003E) << 2) | ((rgba & 0x003E) >> 3);
+                dest[4 * x + 1] = ((rgba & 0x07C0) >> 3) | ((rgba & 0x07C0) >> 8);
+                dest[4 * x + 2] = ((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13);
+                dest[4 * x + 3] = (rgba & 0x0001) ? 0xFF : 0;
             }
         }
     }
@@ -449,10 +449,10 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t rgba = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13));
-                dest[4 * x + 1] = static_cast<uint8_t>(((rgba & 0x07C0) >> 3) | ((rgba & 0x07C0) >> 8));
-                dest[4 * x + 2] = static_cast<uint8_t>(((rgba & 0x003E) << 2) | ((rgba & 0x003E) >> 3));
-                dest[4 * x + 3] = static_cast<uint8_t>((rgba & 0x0001) ? 0xFF : 0);
+                dest[4 * x + 0] = ((rgba & 0xF800) >> 8) | ((rgba & 0xF800) >> 13);
+                dest[4 * x + 1] = ((rgba & 0x07C0) >> 3) | ((rgba & 0x07C0) >> 8);
+                dest[4 * x + 2] = ((rgba & 0x003E) << 2) | ((rgba & 0x003E) >> 3);
+                dest[4 * x + 3] = (rgba & 0x0001) ? 0xFF : 0;
             }
         }
     }
@@ -472,10 +472,10 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint16_t bgra = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>(((bgra & 0xF800) >> 8) | ((bgra & 0xF800) >> 13));
-                dest[4 * x + 1] = static_cast<uint8_t>(((bgra & 0x07C0) >> 3) | ((bgra & 0x07C0) >> 8));
-                dest[4 * x + 2] = static_cast<uint8_t>(((bgra & 0x003E) << 2) | ((bgra & 0x003E) >> 3));
-                dest[4 * x + 3] = static_cast<uint8_t>((bgra & 0x0001) ? 0xFF : 0);
+                dest[4 * x + 0] = ((bgra & 0xF800) >> 8) | ((bgra & 0xF800) >> 13);
+                dest[4 * x + 1] = ((bgra & 0x07C0) >> 3) | ((bgra & 0x07C0) >> 8);
+                dest[4 * x + 2] = ((bgra & 0x003E) << 2) | ((bgra & 0x003E) >> 3);
+                dest[4 * x + 3] = (bgra & 0x0001) ? 0xFF : 0;
             }
         }
     }
@@ -494,10 +494,10 @@
             for (size_t x = 0; x < width; x++)
             {
                 uint32_t rgba = source[x];
-                dest[4 * x + 0] = static_cast<uint8_t>((rgba & 0x000003FF) >>  2);
-                dest[4 * x + 1] = static_cast<uint8_t>((rgba & 0x000FFC00) >> 12);
-                dest[4 * x + 2] = static_cast<uint8_t>((rgba & 0x3FF00000) >> 22);
-                dest[4 * x + 3] = static_cast<uint8_t>(((rgba & 0xC0000000) >> 30) * 0x55);
+                dest[4 * x + 0] = (rgba & 0x000003FF) >>  2;
+                dest[4 * x + 1] = (rgba & 0x000FFC00) >> 12;
+                dest[4 * x + 2] = (rgba & 0x3FF00000) >> 22;
+                dest[4 * x + 3] = ((rgba & 0xC0000000) >> 30) * 0x55;
             }
         }
     }
diff --git a/src/libANGLE/renderer/gl/TextureGL.cpp b/src/libANGLE/renderer/gl/TextureGL.cpp
index c2b2677..61ec207 100644
--- a/src/libANGLE/renderer/gl/TextureGL.cpp
+++ b/src/libANGLE/renderer/gl/TextureGL.cpp
@@ -358,7 +358,7 @@
     if (curState.*samplerMember != newState.*samplerMember)
     {
         curState.*samplerMember = newState.*samplerMember;
-        functions->texParameterf(textureType, name, static_cast<GLfloat>(curState.*samplerMember));
+        functions->texParameterf(textureType, name, curState.*samplerMember);
     }
 }
 
diff --git a/src/libANGLE/renderer/gl/VertexArrayGL.cpp b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
index 76635a0..996321d 100644
--- a/src/libANGLE/renderer/gl/VertexArrayGL.cpp
+++ b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
@@ -264,7 +264,7 @@
             // Find the index range in the buffer
             const IndexRangeCache *rangeCache = mElementArrayBuffer.get()->getIndexRangeCache();
 
-            if (!rangeCache->findRange(type, static_cast<unsigned int>(elementArrayBufferOffset), count, outIndexRange))
+            if (!rangeCache->findRange(type, elementArrayBufferOffset, count, outIndexRange))
             {
                 // Need to compute the index range.
                 mStateManager->bindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementArrayBufferID);
@@ -273,7 +273,7 @@
                 *outIndexRange = IndexRangeCache::ComputeRange(type, elementArrayBufferPointer + elementArrayBufferOffset, count);
 
                 // TODO: Store the range cache at the impl level since the gl::Buffer object is supposed to remain constant
-                const_cast<IndexRangeCache*>(rangeCache)->addRange(type, static_cast<unsigned int>(elementArrayBufferOffset), count, *outIndexRange);
+                const_cast<IndexRangeCache*>(rangeCache)->addRange(type, elementArrayBufferOffset, count, *outIndexRange);
 
                 if (!mFunctions->unmapBuffer(GL_ELEMENT_ARRAY_BUFFER))
                 {
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index f4f8e31..7dea88e 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -1463,7 +1463,7 @@
         if (uniformBufferSize == 0)
         {
             // Bind the whole buffer.
-            uniformBufferSize = static_cast<size_t>(uniformBuffer->getSize());
+            uniformBufferSize = uniformBuffer->getSize();
         }
 
         if (uniformBufferSize < uniformBlock->dataSize)
@@ -1637,7 +1637,7 @@
     if (elementArrayBuffer)
     {
         uintptr_t offset = reinterpret_cast<uintptr_t>(indices);
-        if (!elementArrayBuffer->getIndexRangeCache()->findRange(type, static_cast<unsigned int>(offset), count, indexRangeOut))
+        if (!elementArrayBuffer->getIndexRangeCache()->findRange(type, offset, count, indexRangeOut))
         {
             rx::BufferImpl *bufferImpl = elementArrayBuffer->getImplementation();
             const uint8_t *dataPointer = NULL;
@@ -1650,7 +1650,7 @@
 
             const uint8_t *offsetPointer = dataPointer + offset;
             *indexRangeOut = rx::IndexRangeCache::ComputeRange(type, offsetPointer, count);
-            elementArrayBuffer->getIndexRangeCache()->addRange(type, static_cast<unsigned int>(offset), count, *indexRangeOut);
+            elementArrayBuffer->getIndexRangeCache()->addRange(type, offset, count, *indexRangeOut);
         }
     }
     else
diff --git a/src/tests/deqp.gypi b/src/tests/deqp.gypi
index fdfefd1..c70833c 100644
--- a/src/tests/deqp.gypi
+++ b/src/tests/deqp.gypi
@@ -604,7 +604,6 @@
                                     'AdditionalOptions':
                                     [
                                         '/wd4131', # old-style declarator
-                                        '/wd4244', # Conversion from 'type1' to 'type2', possible loss of data
                                         '/wd4324', # structure was padded
                                         '/wd4701', # potentially uninit used
                                         '/wd4996', # deprecated
@@ -663,7 +662,6 @@
                                         '/wd4028', # parameter differs from decl
                                         '/wd4101', # unreferenced local
                                         '/wd4189', # unreferenced but initted
-                                        '/wd4244', # Conversion from 'type1' to 'type2', possible loss of data
                                     ],
                                 },
                             },
diff --git a/src/tests/end2end_tests/BlendMinMaxTest.cpp b/src/tests/end2end_tests/BlendMinMaxTest.cpp
index 56a0877..8c02c5b 100644
--- a/src/tests/end2end_tests/BlendMinMaxTest.cpp
+++ b/src/tests/end2end_tests/BlendMinMaxTest.cpp
@@ -28,7 +28,7 @@
 
     static GLubyte getExpected(bool blendMin, float curColor, GLubyte prevColor)
     {
-        GLubyte curAsUbyte = static_cast<GLubyte>((curColor * std::numeric_limits<GLubyte>::max()) + 0.5f);
+        GLubyte curAsUbyte = (curColor * std::numeric_limits<GLubyte>::max()) + 0.5f;
         return blendMin ? std::min<GLubyte>(curAsUbyte, prevColor) : std::max<GLubyte>(curAsUbyte, prevColor);
     }
 
diff --git a/src/tests/end2end_tests/BufferDataTest.cpp b/src/tests/end2end_tests/BufferDataTest.cpp
index 5dcf29f..7f47935 100644
--- a/src/tests/end2end_tests/BufferDataTest.cpp
+++ b/src/tests/end2end_tests/BufferDataTest.cpp
@@ -362,7 +362,7 @@
     uint8_t srcBytes[numBytes];
     for (size_t i = 0; i < numBytes; ++i)
     {
-        srcBytes[i] = static_cast<uint8_t>(i);
+        srcBytes[i] = i;
     }
 
     void *dest = glMapBufferRange(GL_ARRAY_BUFFER, 0, numBytes, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
diff --git a/src/tests/end2end_tests/IndexedPointsTest.cpp b/src/tests/end2end_tests/IndexedPointsTest.cpp
index 026db32..043ba28 100644
--- a/src/tests/end2end_tests/IndexedPointsTest.cpp
+++ b/src/tests/end2end_tests/IndexedPointsTest.cpp
@@ -103,8 +103,8 @@
 
         for (size_t i = 0; i < mPointCount; i++)
         {
-            GLuint x = static_cast<GLuint>(viewportSize[0] + (getIndexPositionX(i) * 0.5f + 0.5f) * (viewportSize[2] - viewportSize[0]));
-            GLuint y = static_cast<GLuint>(viewportSize[1] + (getIndexPositionY(i) * 0.5f + 0.5f) * (viewportSize[3] - viewportSize[1]));
+            GLuint x = viewportSize[0] + (getIndexPositionX(i) * 0.5f + 0.5f) * (viewportSize[2] - viewportSize[0]);
+            GLuint y = viewportSize[1] + (getIndexPositionY(i) * 0.5f + 0.5f) * (viewportSize[3] - viewportSize[1]);
 
             if (i < firstIndex)
             {
diff --git a/src/tests/end2end_tests/InstancingTest.cpp b/src/tests/end2end_tests/InstancingTest.cpp
index 1bfdcd9..68fcc07 100644
--- a/src/tests/end2end_tests/InstancingTest.cpp
+++ b/src/tests/end2end_tests/InstancingTest.cpp
@@ -221,8 +221,8 @@
         {
             unsigned int baseOffset = quadIndex * 3;
 
-            int quadx = static_cast<int>(((mInstances[baseOffset + 0]) * 0.5f + 0.5f) * getWindowWidth());
-            int quady = static_cast<int>(((mInstances[baseOffset + 1]) * 0.5f + 0.5f) * getWindowHeight());
+            float quadx = ((mInstances[baseOffset + 0]) * 0.5f + 0.5f) * getWindowWidth();
+            float quady = ((mInstances[baseOffset + 1]) * 0.5f + 0.5f) * getWindowHeight();
 
             EXPECT_PIXEL_EQ(quadx, quady, 255, 0, 0, 255);
         }
diff --git a/src/tests/end2end_tests/LineLoopTest.cpp b/src/tests/end2end_tests/LineLoopTest.cpp
index e6c4a73..6f9217c 100644
--- a/src/tests/end2end_tests/LineLoopTest.cpp
+++ b/src/tests/end2end_tests/LineLoopTest.cpp
@@ -69,7 +69,7 @@
         ANGLETest::TearDown();
     }
 
-    void runTest(GLenum indexType, GLuint indexBuffer, const GLvoid *indexPtr)
+    void runTest(GLenum indexType, GLubyte indexBuffer, const GLvoid *indexPtr)
     {
         static const GLfloat loopPositions[] =
         {
diff --git a/src/tests/end2end_tests/MipmapTest.cpp b/src/tests/end2end_tests/MipmapTest.cpp
index 49a17fe..7c842f6 100644
--- a/src/tests/end2end_tests/MipmapTest.cpp
+++ b/src/tests/end2end_tests/MipmapTest.cpp
@@ -150,9 +150,9 @@
 
         for (int i = 0; i < width * height; i+=1)
         {
-            data[3 * i + 0] = static_cast<GLubyte>(r);
-            data[3 * i + 1] = static_cast<GLubyte>(g);
-            data[3 * i + 2] = static_cast<GLubyte>(b);
+            data[3 * i + 0] = r;
+            data[3 * i + 1] = g;
+            data[3 * i + 2] = b;
         }
 
         return data;
@@ -386,9 +386,9 @@
 
     // Complete the texture by initializing the remaining levels.
     int n = 1;
-    while (getWindowWidth() / (1U << n) >= 1)
+    while (getWindowWidth() / pow(2, n) >= 1)
     {
-        glTexImage2D(GL_TEXTURE_2D, n, GL_RGB, getWindowWidth() / (1U << n), getWindowWidth() / (1U << n), 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+        glTexImage2D(GL_TEXTURE_2D, n, GL_RGB, getWindowWidth() / pow(2, n), getWindowWidth() / pow(2, n), 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
         ASSERT_GL_NO_ERROR();
         n+=1;
     }
diff --git a/src/tests/end2end_tests/PointSpritesTest.cpp b/src/tests/end2end_tests/PointSpritesTest.cpp
index 4fad700..4590d6c 100644
--- a/src/tests/end2end_tests/PointSpritesTest.cpp
+++ b/src/tests/end2end_tests/PointSpritesTest.cpp
@@ -84,8 +84,8 @@
 
     maxPointSize = std::min(maxPointSize, 64.0f);
     GLfloat pointWidth = maxPointSize / windowWidth;
-    GLint step = static_cast<GLint>(floorf(maxPointSize / 4));
-    GLint pointStep = std::max<GLint>(1, step);
+    GLfloat step = floorf(maxPointSize / 4);
+    GLfloat pointStep = std::max<GLfloat>(1.0f, step);
 
     GLint pointSizeLoc = glGetUniformLocation(program, "uPointSize");
     ASSERT_GL_NO_ERROR();
@@ -102,10 +102,10 @@
     glBindBuffer(GL_ARRAY_BUFFER, vertexObject);
     ASSERT_GL_NO_ERROR();
 
-    GLfloat thePoints[] = { -0.5f + pixelOffset, -0.5f + pixelOffset,
-                             0.5f + pixelOffset, -0.5f + pixelOffset,
-                            -0.5f + pixelOffset,  0.5f + pixelOffset,
-                             0.5f + pixelOffset,  0.5f + pixelOffset };
+    GLfloat thePoints[] = { -0.5 + pixelOffset, -0.5 + pixelOffset,
+                             0.5 + pixelOffset, -0.5 + pixelOffset,
+                            -0.5 + pixelOffset,  0.5 + pixelOffset,
+                             0.5 + pixelOffset,  0.5 + pixelOffset };
 
     glBufferData(GL_ARRAY_BUFFER, sizeof(thePoints), thePoints, GL_STATIC_DRAW);
     ASSERT_GL_NO_ERROR();
@@ -123,8 +123,8 @@
     std::string debugText;
     for (float py = 0; py < 2; ++py) {
         for (float px = 0; px < 2; ++px) {
-            float pointX = -0.5f + px + pixelOffset;
-            float pointY = -0.5f + py + pixelOffset;
+            float pointX = -0.5 + px + pixelOffset;
+            float pointY = -0.5 + py + pixelOffset;
             for (int yy = 0; yy < maxPointSize; yy += pointStep) {
                 for (int xx = 0; xx < maxPointSize; xx += pointStep) {
                     // formula for s and t from OpenGL ES 2.0 spec section 3.3
@@ -132,11 +132,11 @@
                     float yw = s2p(pointY);
                     float u = xx / maxPointSize * 2 - 1;
                     float v = yy / maxPointSize * 2 - 1;
-                    int xf = static_cast<int>(floorf(s2p(pointX + u * pointWidth)));
-                    int yf = static_cast<int>(floorf(s2p(pointY + v * pointWidth)));
-                    float s = 0.5f + (xf + 0.5f - xw) / maxPointSize;
-                    float t = 0.5f + (yf + 0.5f - yw) / maxPointSize;
-                    GLubyte color[4] = { static_cast<GLubyte>(floorf(s * 255)), static_cast<GLubyte>(floorf((1 - t) * 255)), 0, 255 };
+                    float xf = floorf(s2p(pointX + u * pointWidth));
+                    float yf = floorf(s2p(pointY + v * pointWidth));
+                    float s = 0.5 + (xf + 0.5 - xw) / maxPointSize;
+                    float t = 0.5 + (yf + 0.5 - yw) / maxPointSize;
+                    GLubyte color[4] = { floorf(s * 255), floorf((1 - t) * 255), 0, 255 };
                     EXPECT_PIXEL_NEAR(xf, yf, color[0], color[1], color[2], color[3], 4);
                 }
             }
diff --git a/src/tests/perf_tests/BufferSubData.cpp b/src/tests/perf_tests/BufferSubData.cpp
index 3ad5dd2..ddc6854 100644
--- a/src/tests/perf_tests/BufferSubData.cpp
+++ b/src/tests/perf_tests/BufferSubData.cpp
@@ -254,11 +254,11 @@
     }
 
     std::vector<uint8_t> data;
-    GLsizei triDataSize = static_cast<GLsizei>(GetVertexData(params.vertexType,
-                                                             params.vertexComponentCount,
-                                                             params.vertexNormalized, &data));
+    GLsizei triDataSize = GetVertexData(params.vertexType,
+                                        params.vertexComponentCount,
+                                        params.vertexNormalized, &data);
 
-    mNumTris = static_cast<int>(params.updateSize / triDataSize);
+    mNumTris = params.updateSize / triDataSize;
     for (int i = 0, offset = 0; i < mNumTris; ++i)
     {
         memcpy(mUpdateData + offset, &data[0], triDataSize);
diff --git a/src/tests/tests.gyp b/src/tests/tests.gyp
index c1d2fb2..31d3fa5 100644
--- a/src/tests/tests.gyp
+++ b/src/tests/tests.gyp
@@ -178,10 +178,6 @@
                             ],
                         },
                     },
-                    'msvs_disabled_warnings':
-                    [
-                        4244, # Conversion from 'type1' to 'type2', possible loss of data
-                    ],
                 },
             ],
             'conditions':