diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
index 7d395c6cea76325f1695296bdbb479db8d9715db..61a25a97e9fd1ddb30f000eadd5d56989faafe1f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java
@@ -237,7 +237,7 @@ public class ImageChannelsUtils
 
         // resized the image if necessary
         Size sizeOrNull = imageReference.tryGetSize();
-        if (sizeOrNull != null)
+        if (sizeOrNull != null && isRescalingNeeded(image, sizeOrNull))
         {
             start = operationLog.isDebugEnabled() ? System.currentTimeMillis() : 0;
             image = ImageUtil.createThumbnail(image, sizeOrNull.getWidth(), sizeOrNull.getHeight());
@@ -262,6 +262,12 @@ public class ImageChannelsUtils
         return image;
     }
 
+    // we do not want to generate thumnnails which are larger in any dimension than the original
+    private static boolean isRescalingNeeded(BufferedImage image, Size size)
+    {
+        return image.getWidth() > size.getWidth() || image.getHeight() > size.getHeight();
+    }
+
     private static BufferedImage loadImage(AbsoluteImageReference imageReference)
     {
         IContent content = imageReference.getContent();