diff --git a/src/dawn/node/interop/Core.h b/src/dawn/node/interop/Core.h
index 1ad90adf05..8408d157e8 100644
--- a/src/dawn/node/interop/Core.h
+++ b/src/dawn/node/interop/Core.h
@@ -530,8 +530,8 @@ namespace wgpu::interop {
             }
 
             // Check for out of range and throw a type error.
-            constexpr T kMin = std::numeric_limits<T>::min();
-            constexpr T kMax = std::numeric_limits<T>::max();
+            constexpr double kMin = static_cast<double>(std::numeric_limits<T>::min());
+            constexpr double kMax = static_cast<double>(std::numeric_limits<T>::max());
             if (!(kMin <= doubleValue && doubleValue <= kMax)) {
                 return Error("Values are out of the range of that integer.");
             }