diff --git a/Utilities/cmexpat/CMakeLists.txt b/Utilities/cmexpat/CMakeLists.txt
index 37818219840748f280cb32cc6d969ed0773a31a3..d2941654779e18a62a299518bfedb7c00ff374e6 100644
--- a/Utilities/cmexpat/CMakeLists.txt
+++ b/Utilities/cmexpat/CMakeLists.txt
@@ -1,3 +1,11 @@
+# Disable warnings to avoid changing 3rd party code.
+IF(CMAKE_C_COMPILER_ID MATCHES
+    "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$")
+  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
+ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale")
+  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall")
+ENDIF()
+
 include(ConfigureChecks.cmake)
 if(WIN32)
   add_definitions(-DCOMPILING_FOR_WINDOWS)
diff --git a/Utilities/cmexpat/lib/winconfig.h b/Utilities/cmexpat/lib/winconfig.h
index 908d714808a4d63aa9db7086dd5ca35c1f645d67..d7dad38f7b6058b79291ca522bbc13bdb68ba7ad 100644
--- a/Utilities/cmexpat/lib/winconfig.h
+++ b/Utilities/cmexpat/lib/winconfig.h
@@ -19,4 +19,9 @@
 
 #include "expat_config.h"
 
+#if defined(_MSC_VER)
+# pragma warning(push,1)
+# pragma warning(disable:4311)   /* pointer truncation */
+#endif
+
 #endif /* ndef WINCONFIG_H */