diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java
index 8d5d3874dc43f5419659362a840073f6340e5526..f4ae055384167e014232663d7d9f4345e2f1edb7 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java
@@ -26,7 +26,7 @@ import java.util.List;
  * @since 1.9
  * @author Bernd Rinn
  */
-public class ImageChannel implements Serializable
+public class ImageChannel implements Serializable, Comparable<ImageChannel>
 {
     private static final long serialVersionUID = 1L;
 
@@ -145,4 +145,9 @@ public class ImageChannel implements Serializable
                 + ", wavelength=" + wavelength + ", transformations=" + transformations + "]";
     }
 
+    public int compareTo(ImageChannel imageChannel)
+    {
+        return code.compareTo(imageChannel.code);
+    }
+
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java
index 8692a39847c536072ba156499d36925cfe95d7fd..ef0eb4e0036d364a2c79c7f30864c70322f02664 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetMetadata.java
@@ -4,6 +4,7 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -24,7 +25,7 @@ public class ImageDatasetMetadata implements Serializable
     private final List<String> channelCodes;
 
     private final List<String> channelLabels;
-    
+
     private List<ImageChannel> channels;
 
     private final int tilesNumber;
@@ -42,10 +43,11 @@ public class ImageDatasetMetadata implements Serializable
     private final int thumbnailHeight;
 
     public ImageDatasetMetadata(IImageDatasetIdentifier dataset, List<ImageChannel> channels,
-            int tilesRows, int tilesCols, int width, int height,
-            int thumbnailWidth, int thumbnailHeight)
+            int tilesRows, int tilesCols, int width, int height, int thumbnailWidth,
+            int thumbnailHeight)
     {
         this.imageDataset = dataset;
+        Collections.sort(channels);
         this.channels = channels;
         this.channelsNumber = channels.size();
         this.channelNames = new ArrayList<String>(channelsNumber);
@@ -216,9 +218,9 @@ public class ImageDatasetMetadata implements Serializable
                 + tilesNumber + " tiles. Image resolution: " + width + "x" + height
                 + thumbnailsDesc;
     }
-    
+
     // Java de-serialization
-    
+
     private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
     {
         in.defaultReadObject();
@@ -233,5 +235,5 @@ public class ImageDatasetMetadata implements Serializable
             }
         }
     }
-    
+
 }
\ No newline at end of file