diff --git a/CImg.h b/CImg.h
index 809150921d6de729387693712121d2e4658fc176..0f7881085dd64ccda890107fe2bf55d4d5c6a4b3 100644
--- a/CImg.h
+++ b/CImg.h
@@ -27483,7 +27483,10 @@ namespace cimg_library_suffixed {
       } break;
       case 2 : { // Salt & Pepper noise
         if (nsigma<0) nsigma = -nsigma;
-        if (M==m) { m = 0; M = cimg::type<T>::is_float()?(Tfloat)1:(Tfloat)cimg::type<T>::max(); }
+        if (M==m) {
+          if (cimg::type<T>::is_float()) { m = (Tfloat)0; M = (Tfloat)1; }
+          else { m = (Tfloat)cimg::type<T>::min(); M = (Tfloat)cimg::type<T>::max(); }
+        }
         cimg_rof(*this,ptrd,T) if (cimg::rand(100)<nsigma) *ptrd = (T)(cimg::rand()<0.5?M:m);
       } break;
       case 3 : { // Poisson Noise