diff --git a/game-music-emu/gme/Fir_Resampler.cpp b/game-music-emu/gme/Fir_Resampler.cpp
index 7f0deeca3..a311895a2 100644
--- a/game-music-emu/gme/Fir_Resampler.cpp
+++ b/game-music-emu/gme/Fir_Resampler.cpp
@@ -23,6 +23,10 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
 #undef PI
 #define PI 3.1415926535897932384626433832795029
 
+#if _MSC_VER >= 1911
+#pragma float_control(precise, on, push)
+#endif // _MSC_VER >= 1911
+
 static void gen_sinc( double rolloff, int width, double offset, double spacing, double scale,
 		int count, short* out )
 {
@@ -52,6 +56,10 @@ static void gen_sinc( double rolloff, int width, double offset, double spacing,
 	}
 }
 
+#if _MSC_VER >= 1911
+#pragma float_control(pop)
+#endif // _MSC_VER >= 1911
+
 Fir_Resampler_::Fir_Resampler_( int width, sample_t* impulses_ ) :
 	width_( width ),
 	write_offset( width * stereo - stereo ),