diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java
index e7159c5295324ef17931518cd63590bfe21d1b4f..c7530c3ebc77c31ed579a6d9ed5ec27d15b7a141 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java
@@ -26,9 +26,11 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
 import javax.imageio.ImageIO;
 
@@ -530,6 +532,7 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr
                 imageDataSetStructure.getImageStorageConfiguraton().tryGetImageLibrary();
         List<ImageFileInfo> images = imageDataSetStructure.getImages();
 
+        Set<String> usedFiles = new HashSet<String>();
         if (imageDataSetInformation.isGenerateOverviewImagesFromRegisteredImages())
         {
             IHierarchicalContent content =
@@ -540,7 +543,7 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr
                 for (ImageFileInfo imageFileInfo : images)
                 {
                     setBoundingBox(imageDataSetInformation,
-                            content.getNode(imageFileInfo.getImageRelativePath()), imageLibrary);
+                            content.getNode(imageFileInfo.getImageRelativePath()), imageLibrary, usedFiles);
                 }
             } finally
             {
@@ -555,14 +558,20 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr
             {
                 File file = new File(incomingDirectory, imageFileInfo.getImageRelativePath());
                 setBoundingBox(imageDataSetInformation, new FileBasedContentNode(file),
-                        imageLibrary);
+                        imageLibrary, usedFiles);
             }
         }
     }
 
     private void setBoundingBox(ImageDataSetInformation imageDataSetInformation,
-            IHierarchicalContentNode content, ImageLibraryInfo imageLibrary)
+            IHierarchicalContentNode content, ImageLibraryInfo imageLibrary, Set<String> usedFiles)
     {
+        String relativePath = content.getRelativePath();
+        if (usedFiles.contains(relativePath))
+        {
+            return;
+        }
+        usedFiles.add(relativePath);
         try
         {
             Size size = Utils.loadUnchangedImageSize(content, null, imageLibrary);
@@ -577,7 +586,7 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr
             }
         } catch (Exception ex)
         {
-            throw new UserFailureException("Error ocured when calculating bounding box of " + content.getRelativePath(), ex);
+            throw new UserFailureException("Error ocured when calculating bounding box of " + relativePath, ex);
         }
     }