diff --git a/Code/IO/otbGDALImageIO.cxx b/Code/IO/otbGDALImageIO.cxx
index dff5e861b7a731ad276302d27c1df0200c0f1e1d..c80f9d95d0a8953db4f90974fa37f07e77cd7e8a 100644
--- a/Code/IO/otbGDALImageIO.cxx
+++ b/Code/IO/otbGDALImageIO.cxx
@@ -138,9 +138,9 @@ GDALImageIO::GDALImageIO()
   // Set default spacing to one
   m_Spacing[0] = 1.0;
   m_Spacing[1] = 1.0;
-  // Set default origin to half a pixel (centered pixel convention)
-  m_Origin[0] = 0.5;
-  m_Origin[1] = 0.5;
+  // Set default origin to (0,0) (centered pixel convention)
+  m_Origin[0] = 0;
+  m_Origin[1] = 0;
 
   m_IsIndexed   = false;
   m_DatasetNumber = 0;
@@ -1866,8 +1866,11 @@ bool GDALImageIO::GetOriginFromGMLBox(std::vector<double> &origin)
   std::istringstream ss1 (originValues[1]);
   ss0 >> origin[1];
   ss1 >> origin[0];
-  origin[0] += -1.0 + 0.5;
-  origin[1] += -1.0 + 0.5;
+
+  // We stick to OSSIM convention here (center of ul pixel is (0,0),
+  // so we need to remove 1 pixel
+  origin[0] -= 1.0;
+  origin[1] -= 1.0;
 
   otbMsgDevMacro( << "\t Origin from GML box: " <<  origin[0] << ", " << origin[1] );
 
diff --git a/Code/IO/otbJPEG2000ImageIO.cxx b/Code/IO/otbJPEG2000ImageIO.cxx
index c6de7808a3284f1714afa47019f69fd334226c06..dc2a63bd4cd43f04148a718cf6247f7d1c41094c 100644
--- a/Code/IO/otbJPEG2000ImageIO.cxx
+++ b/Code/IO/otbJPEG2000ImageIO.cxx
@@ -242,8 +242,11 @@ bool JPEG2000MetadataReader::GetOriginFromGMLBox (std::vector<double> &origin)
   std::istringstream ss1 (originValues[1]);
   ss0 >> origin[1];
   ss1 >> origin[0];
-  origin[0] += -1.0 + 0.5;
-  origin[1] += -1.0 + 0.5;
+
+  // We stick to OSSIM convention here (center of ul pixel is (0,0),
+  // so we need to remove 1 pixel
+  origin[0] -= 1.0;
+  origin[1] -= 1.0;
 
   otbMsgDevMacro( << "\t Origin from GML box: " <<  origin[0] << ", " << origin[1] );
 
@@ -761,8 +764,8 @@ JPEG2000ImageIO::JPEG2000ImageIO()
   m_Spacing[0] = 1.0;
   m_Spacing[1] = 1.0;
   // Set default origin to zero
-  m_Origin[0] = 0.5;
-  m_Origin[1] = 0.5;
+  m_Origin[0] = 0.;
+  m_Origin[1] = 0.;
 
   m_BytePerPixel = 1;
   m_ResolutionFactor = 0; // Full resolution by default
@@ -1368,7 +1371,7 @@ void JPEG2000ImageIO::ReadImageInformation()
     else
       {
       otbMsgDevMacro( << "NO PROJECTION IN GML BOX => SENSOR MODEL " );
-      m_Origin[0] = 0.5; m_Origin[1] = 0.5;
+      m_Origin[0] = 0.; m_Origin[1] = 0.;
       m_Spacing[0] = 1; m_Spacing[1] = 1;
 
       lJP2MetadataReader.GetOriginFromGMLBox(m_Origin);
@@ -1381,8 +1384,8 @@ void JPEG2000ImageIO::ReadImageInformation()
   else
     {
     otbMsgDevMacro( << "JPEG2000 file has NO metadata available!");
-    m_Origin[0] = 0.5;
-    m_Origin[1] = 0.5;
+    m_Origin[0] = 0.;
+    m_Origin[1] = 0.;
     m_Spacing[0] = 1;
     m_Spacing[1] = 1;
     }