diff --git a/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx b/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx
index 45ddb823bdebd17550073809f841e5f8542f9132..1085a23c6f8b86a0b6b7b4e76925f064e45332d1 100644
--- a/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx
+++ b/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx
@@ -1758,8 +1758,22 @@ void GDALImageIO::InternalWriteImageInformation(const void* buffer)
   otbMsgDevMacro( << "GCP Count: " << dataset->GetGCPCount() );
 
   // Write no-data flags
+  std::vector<bool> noDataValueAvailable;
+  bool ret = itk::ExposeMetaData<std::vector<bool> >(dict,MetaDataKey::NoDataValueAvailable,noDataValueAvailable);
   
+  std::vector<double> noDataValues;
+  itk::ExposeMetaData<std::vector<double> >(dict,MetaDataKey::NoDataValue,noDataValues);
 
+  if(ret)
+    {
+    for (int iBand = 0; iBand < dataset->GetRasterCount(); iBand++)
+      {
+      if(noDataValueAvailable[iBand])
+        {
+        dataset->GetRasterBand(iBand+1)->SetNoDataValue(noDataValues[iBand]);
+        }
+      }
+    }
 }
 
 std::string GDALImageIO::FilenameToGdalDriverShortName(const std::string& name) const