diff --git a/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx b/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx
index 54e38669174e69349a7be93759944f2e79410b4d..de88f29bf436077f2e5e34eea2b90ebf8bbe18a4 100644
--- a/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx
+++ b/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx
@@ -441,10 +441,10 @@ private:
     catch ( itk::ExceptionObject & /*err*/ )
       {
       }
-
-    SetParameterInt("rgb.r",metadataInterface->GetDefaultDisplay()[0]);
-    SetParameterInt("rgb.g",metadataInterface->GetDefaultDisplay()[1]);
-    SetParameterInt("rgb.b",metadataInterface->GetDefaultDisplay()[2]);
+    auto rgbVect = metadataInterface->GetDefaultDisplay();
+    SetParameterInt("rgb.r",rgbVect[0]);
+    SetParameterInt("rgb.g",rgbVect[1]);
+    SetParameterInt("rgb.b",rgbVect[2]);
 
     ossOutput << std::endl << "Image default RGB composition:" << std::endl;
     ossOutput << "\t[R, G, B] = [" << GetParameterInt("rgb.r") << "," << GetParameterInt("rgb.g") << "," << GetParameterInt("rgb.b") << "]" << std::endl;
diff --git a/Modules/Core/Metadata/src/otbPleiadesImageMetadataInterface.cxx b/Modules/Core/Metadata/src/otbPleiadesImageMetadataInterface.cxx
index 2d6ba2c4775e596123d18c3019a853fe2b7c10a7..4eda669a8db48701c26ab857f28d2ab8ce2a7405 100644
--- a/Modules/Core/Metadata/src/otbPleiadesImageMetadataInterface.cxx
+++ b/Modules/Core/Metadata/src/otbPleiadesImageMetadataInterface.cxx
@@ -937,19 +937,48 @@ PleiadesImageMetadataInterface
     itkExceptionMacro(<< "Invalid Metadata, no Pleiades Image");
     }
 
+  std::vector<unsigned int> rgb(3);
+
+  rgb[0] = 0;
+  rgb[1] = 1;
+  rgb[2] = 2;
+
   ImageKeywordlistType imageKeywordlist;
+  if (! dict.HasKey(MetaDataKey::OSSIMKeywordlistKey))
+    {
+    return rgb;
+    }
+  itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
 
-  if (dict.HasKey(MetaDataKey::OSSIMKeywordlistKey))
+  if ( !imageKeywordlist.HasKey( "support_data.band_name_list" ) )
     {
-    itk::ExposeMetaData<ImageKeywordlistType>(dict, MetaDataKey::OSSIMKeywordlistKey, imageKeywordlist);
+    return rgb;
     }
 
+  const std::string & rgbOrder =
+    imageKeywordlist.GetMetadataByKey( "support_data.band_name_list" );
 
-  std::vector<unsigned int> rgb(3);
+  std::vector<std::string> bandList;
+  boost::split(bandList, rgbOrder, boost::is_any_of(" "));
 
-  rgb[0] = 0;
-  rgb[1] = 1;
-  rgb[2] = 2;
+  if (bandList[0] == "P")
+    {
+    rgb[1] = 0;
+    rgb[2] = 0;
+    return rgb;
+    }
+
+  if (bandList.size() >= 3)
+    {
+    for (int i = 0 ; i < 3 ; i++ )
+      {
+      std::string band = bandList[i];
+      if (band[0] == 'B')
+        {
+        rgb[i] = lexical_cast<unsigned int>(band.c_str() + 1);
+        }
+      }
+    }
 
   return rgb;
 }