diff --git a/build/standalone.gypi b/build/standalone.gypi
index 6d1d3cb..fe4995b 100644
--- a/build/standalone.gypi
+++ b/build/standalone.gypi
@@ -336,9 +336,6 @@
               '-Wno-microsoft-enum-value',  # http://crbug.com/505296
               '-Wno-unknown-pragmas',  # http://crbug.com/505314
               '-Wno-microsoft-cast',  # http://crbug.com/550065
-
-              # TODO(ochang): Fix these properly eventually.
-              '-Wno-inconsistent-missing-override',
             ],
           }],
           ['OS=="win" and clang==1 and MSVS_VERSION == "2013"', {
diff --git a/core/fxge/win32/win32_int.h b/core/fxge/win32/win32_int.h
index bdba954..923aa84 100644
--- a/core/fxge/win32/win32_int.h
+++ b/core/fxge/win32/win32_int.h
@@ -185,39 +185,39 @@
   CGdiDisplayDriver(HDC hDC);
 
  protected:
-  virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap,
-                            int left,
-                            int top,
-                            void* pIccTransform = NULL,
-                            FX_BOOL bDEdge = FALSE);
-  virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
-                            FX_DWORD color,
-                            const FX_RECT* pSrcRect,
-                            int left,
-                            int top,
-                            int blend_type,
-                            int alpha_flag,
-                            void* pIccTransform);
-  virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
-                                FX_DWORD color,
-                                int dest_left,
-                                int dest_top,
-                                int dest_width,
-                                int dest_height,
-                                const FX_RECT* pClipRect,
-                                FX_DWORD flags,
-                                int alpha_flag,
-                                void* pIccTransform,
-                                int blend_type);
-  virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
-                              int bitmap_alpha,
-                              FX_DWORD color,
-                              const CFX_Matrix* pMatrix,
-                              FX_DWORD render_flags,
-                              void*& handle,
-                              int alpha_flag,
-                              void* pIccTransform,
-                              int blend_type) {
+  FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap,
+                    int left,
+                    int top,
+                    void* pIccTransform = NULL,
+                    FX_BOOL bDEdge = FALSE) override;
+  FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
+                    FX_DWORD color,
+                    const FX_RECT* pSrcRect,
+                    int left,
+                    int top,
+                    int blend_type,
+                    int alpha_flag,
+                    void* pIccTransform) override;
+  FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
+                        FX_DWORD color,
+                        int dest_left,
+                        int dest_top,
+                        int dest_width,
+                        int dest_height,
+                        const FX_RECT* pClipRect,
+                        FX_DWORD flags,
+                        int alpha_flag,
+                        void* pIccTransform,
+                        int blend_type) override;
+  FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
+                      int bitmap_alpha,
+                      FX_DWORD color,
+                      const CFX_Matrix* pMatrix,
+                      FX_DWORD render_flags,
+                      void*& handle,
+                      int alpha_flag,
+                      void* pIccTransform,
+                      int blend_type) override {
     return FALSE;
   }
   FX_BOOL UseFoxitStretchEngine(const CFX_DIBSource* pSource,
@@ -237,35 +237,35 @@
   CGdiPrinterDriver(HDC hDC);
 
  protected:
-  virtual int GetDeviceCaps(int caps_id);
-  virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
-                            FX_DWORD color,
-                            const FX_RECT* pSrcRect,
-                            int left,
-                            int top,
-                            int blend_type,
-                            int alpha_flag,
-                            void* pIccTransform);
-  virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
-                                FX_DWORD color,
-                                int dest_left,
-                                int dest_top,
-                                int dest_width,
-                                int dest_height,
-                                const FX_RECT* pClipRect,
-                                FX_DWORD flags,
-                                int alpha_flag,
-                                void* pIccTransform,
-                                int blend_type);
-  virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
-                              int bitmap_alpha,
-                              FX_DWORD color,
-                              const CFX_Matrix* pMatrix,
-                              FX_DWORD render_flags,
-                              void*& handle,
-                              int alpha_flag,
-                              void* pIccTransform,
-                              int blend_type);
+  int GetDeviceCaps(int caps_id) override;
+  FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
+                    FX_DWORD color,
+                    const FX_RECT* pSrcRect,
+                    int left,
+                    int top,
+                    int blend_type,
+                    int alpha_flag,
+                    void* pIccTransform) override;
+  FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
+                        FX_DWORD color,
+                        int dest_left,
+                        int dest_top,
+                        int dest_width,
+                        int dest_height,
+                        const FX_RECT* pClipRect,
+                        FX_DWORD flags,
+                        int alpha_flag,
+                        void* pIccTransform,
+                        int blend_type) override;
+  FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
+                      int bitmap_alpha,
+                      FX_DWORD color,
+                      const CFX_Matrix* pMatrix,
+                      FX_DWORD render_flags,
+                      void*& handle,
+                      int alpha_flag,
+                      void* pIccTransform,
+                      int blend_type) override;
   int m_HorzSize, m_VertSize;
   FX_BOOL m_bSupportROP;
 };
@@ -293,7 +293,7 @@
 
  protected:
   // IFX_RenderDeviceDriver
-  int GetDeviceCaps(int caps_id);
+  int GetDeviceCaps(int caps_id) override;
   FX_BOOL IsPSPrintDriver() override { return TRUE; }
   FX_BOOL StartRendering() override;
   void EndRendering() override;
