diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ColorRangeCalculator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ColorRangeCalculator.java
index a153bc31b5a04009ef756d2f03d593abc9d02ce5..6e77f15b426dc78d49a1d7a4a8cc5db3ead0e626 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ColorRangeCalculator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ColorRangeCalculator.java
@@ -129,33 +129,39 @@ public class ColorRangeCalculator
     {
         Collection<ImagePixelsRange> ranges =
                 new ArrayList<ColorRangeCalculator.ImagePixelsRange>();
+        IImageReader reader = tryFindReader(imageFiles.get(0));
+        if (reader == null)
+        {
+            throw new IOException("Cannot find a proper reader for the images");
+        }
+
         for (File imageFile : imageFiles)
         {
-            BufferedImage image = loadImage(imageFile);
+            BufferedImage image = loadImage(reader, imageFile);
             ImagePixelsRange range = calculatePixelsRange(image, 0, Integer.MAX_VALUE);
             ranges.add(range);
         }
         return calculateOverlapRange(ranges);
     }
 
-    private static BufferedImage tryRead(String libraryName, File file)
+    private static BufferedImage loadImage(IImageReader reader, File file) throws IOException
     {
-        IImageReader reader =
-                ImageReaderFactory.tryGetImageReaderForFile(libraryName, file.getPath());
-        TiffReadParams params = new TiffReadParams();
-        params.setAllow16BitGrayscaleModel(true);
-        if (reader != null)
-        {
-            // System.err.println("Used reader: " + reader.getName());
-            return reader.readImage(file, params);
-        } else
+        if (file.isFile() == false)
         {
-            return null;
+            throw new IOException("File does not exist: " + file.getPath());
         }
+
+        TiffReadParams params = new TiffReadParams();
+        params.setAllow16BitGrayscaleModel(true);
+        return reader.readImage(file, params);
     }
 
-    private static BufferedImage loadImage(File file) throws IOException
+    private static IImageReader tryFindReader(File file) throws IOException
     {
+        if (file.isFile() == false)
+        {
+            throw new IOException("File does not exist: " + file.getPath());
+        }
         String[] libraries =
                 new String[]
                     { ImageReaderConstants.JAI_LIBRARY, ImageReaderConstants.IMAGEIO_LIBRARY,
@@ -163,16 +169,19 @@ public class ColorRangeCalculator
                             ImageReaderConstants.BIOFORMATS_LIBRARY };
         for (String libraryName : libraries)
         {
-            BufferedImage image = tryRead(libraryName, file);
-            if (image != null)
+            IImageReader reader =
+                    ImageReaderFactory.tryGetImageReaderForFile(libraryName, file.getPath());
+            if (reader != null)
             {
-                // System.err.println("Used library: " + libraryName);
-                return image;
+                // System.err
+                // .println("Used library: " + libraryName + ", reader: " + reader.getName());
+                return reader;
             }
         }
-        throw new IOException("Cannot read image " + file.getPath());
+        return null;
     }
 
+    /** Can be useful to rescale colors of the whole well or plate. */
     public static void main(String[] args) throws IOException
     {
         if (args.length == 0)
@@ -183,15 +192,11 @@ public class ColorRangeCalculator
         List<File> imageFiles = new ArrayList<File>();
         for (int i = 0; i < args.length; i++)
         {
-            File imageFile = new File(args[i]);
-            if (imageFile.isFile() == false)
-            {
-                System.err.println("File does not exist: " + imageFile.getPath());
-                System.exit(1);
-            }
-            imageFiles.add(imageFile);
+            imageFiles.add(new File(args[i]));
         }
+
         ImagePixelsRange range = calculatePixelsRange(imageFiles);
+
         System.out.println(range.getMin() + " " + range.getMax());
     }
 }