diff --git a/gfx/cairo/cairo/src/cairo-compiler-private.h b/gfx/cairo/cairo/src/cairo-compiler-private.h
--- a/gfx/cairo/cairo/src/cairo-compiler-private.h
+++ b/gfx/cairo/cairo/src/cairo-compiler-private.h
@@ -205,18 +205,20 @@
 #if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER)
 #define snprintf _snprintf
 #define popen _popen
 #define pclose _pclose
 #define hypot _hypot
 #endif
 
 #ifdef _MSC_VER
+#ifndef __cplusplus
 #undef inline
 #define inline __inline
+#endif
 
 /* there are currently linkage problems that arise when trying to include intrin.h in c++:
  * D:\sdks\v7.0\include\winnt.h(3674) : error C2733: second C linkage of overloaded function '_interlockedbittestandset' not allowed
  * so avoid defining ffs in c++ code for now */
 #ifndef  __cplusplus
 /* Add a definition of ffs */
 #include <intrin.h>
 #pragma intrinsic(_BitScanForward)