diff --git a/Application/src/commons/common/commons.pc.h b/Application/src/commons/common/commons.pc.h
index 7fadfadfdd1fb365a8f5e92ad4da22b3ace5598f..0278df6307b1e5fe4c855ed4194d969acfabb0f3 100644
--- a/Application/src/commons/common/commons.pc.h
+++ b/Application/src/commons/common/commons.pc.h
@@ -1,6 +1,20 @@
 #pragma once
 
+#ifdef _MSC_VER
 #pragma warning(push, 0)
+#endif
+
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wall"
+#pragma GCC diagnostic ignored "-Wextra"
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wimplicit-int-conversion"
+#pragma GCC diagnostic ignored "-Wimplicit-float-conversion"
+#pragma GCC diagnostic ignored "-Wfloat-conversion"
+#endif
+
+#ifdef __llvm__
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wall"
 #pragma clang diagnostic ignored "-Wextra"
@@ -8,6 +22,7 @@
 #pragma clang diagnostic ignored "-Wimplicit-int-conversion"
 #pragma clang diagnostic ignored "-Wimplicit-float-conversion"
 #pragma clang diagnostic ignored "-Wfloat-conversion"
+#endif
 
 #ifdef WIN32
 #include <windows.h>
@@ -82,6 +97,14 @@ typedef int32_t long_t;
 #include <commons/common/cpputils/debug/Printable.h>
 #include <cnpy.h>
 
-// Code that produces warnings...
+#ifdef __llvm__
 #pragma clang diagnostic pop
+#endif
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+#ifdef _MSC_VER
 #pragma warning(pop)
+#endif
diff --git a/Application/src/commons/common/misc/defines.h b/Application/src/commons/common/misc/defines.h
index 03f4f17dbae2ba84d68655b06b1be4261d22e931..39dedabbcd70365db72fb08ab87afa604a7bcd6e 100644
--- a/Application/src/commons/common/misc/defines.h
+++ b/Application/src/commons/common/misc/defines.h
@@ -1,6 +1,20 @@
 #pragma once
 
+#ifdef _MSC_VER
 #pragma warning(push, 0)
+#endif
+
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wall"
+#pragma GCC diagnostic ignored "-Wextra"
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wimplicit-int-conversion"
+#pragma GCC diagnostic ignored "-Wimplicit-float-conversion"
+#pragma GCC diagnostic ignored "-Wfloat-conversion"
+#endif
+
+#ifdef __llvm__
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wall"
 #pragma clang diagnostic ignored "-Wextra"
@@ -8,6 +22,7 @@
 #pragma clang diagnostic ignored "-Wimplicit-int-conversion"
 #pragma clang diagnostic ignored "-Wimplicit-float-conversion"
 #pragma clang diagnostic ignored "-Wfloat-conversion"
+#endif
 
 #include <commons/common/commons.pc.h>
 
@@ -27,8 +42,17 @@
     #endif
 #endif
 
+#ifdef __llvm__
 #pragma clang diagnostic pop
+#endif
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+#ifdef _MSC_VER
 #pragma warning(pop)
+#endif
 
 #include <misc/MetaObject.h>
 #include <misc/EnumClass.h>