diff --git a/src/main/resources/scripts/Plugins/NoiSee/NoiSee_Bead_Analysis.ijm b/src/main/resources/scripts/Plugins/NoiSee/NoiSee_Bead_Analysis.ijm
index 5a8cf10f49a01a6fe2f42f20ff1bad2e6a9c0bd0..14c23cba551372fdd0895d8456c345bb36043a66 100644
--- a/src/main/resources/scripts/Plugins/NoiSee/NoiSee_Bead_Analysis.ijm
+++ b/src/main/resources/scripts/Plugins/NoiSee/NoiSee_Bead_Analysis.ijm
@@ -666,15 +666,8 @@ function process_beads() {
 
     if (bitDepth() == 16) {
         print("16 bit image type detected, converting to 8 bit...");
-        Stack.getStatistics(_, _, stack_min, stack_max, _);
-        new_max = stack_max * 1.1;
-        // NOTE: having a new value larger than the max value of the current bit
-        // depth is unproblematic since ImageJ apparently just uses the maximum
-        // possible value then:
-        print("setting display range min/max to 0/" + new_max + " (was: " +
-            stack_min + "/" + stack_max + ")");
-        setMinAndMax(0, new_max);
-        run("8-bit");
+        valueRange = detectValueRange();
+        mapTo8bitPreservingSaturation(valueRange[0]);
     }
 
     // remove the scaling so all units (measurements, coordinates, ...) are pixel-based: