diff --git a/modules/io/src/mol/dcd_io.cc b/modules/io/src/mol/dcd_io.cc
index e5422bda63ed4db572a15749cb692706452ec924..15a290279063e9c2dd7dc9948f55c0d0d70437e6 100644
--- a/modules/io/src/mol/dcd_io.cc
+++ b/modules/io/src/mol/dcd_io.cc
@@ -152,9 +152,23 @@ bool read_frame(std::istream& istream, const DCDHeader& header,
   //if(skip_flag) istream.seekg(14*4,std::ios_base::cur);
   if(skip_flag){
     istream.read(dummy,sizeof(dummy));
-    istream.read(reinterpret_cast<char*>(&cell_size[0]),sizeof(float)*3);
-    istream.read(reinterpret_cast<char*>(&cell_angles[0]),sizeof(float)*3);
+    double x,y,z,a,b,c;
+    istream.read(reinterpret_cast<char*>(&x),sizeof(double));
+    istream.read(reinterpret_cast<char*>(&a),sizeof(double));
+    istream.read(reinterpret_cast<char*>(&y),sizeof(double));
+    istream.read(reinterpret_cast<char*>(&b),sizeof(double));
+    istream.read(reinterpret_cast<char*>(&c),sizeof(double));
+    istream.read(reinterpret_cast<char*>(&z),sizeof(double));
     istream.read(dummy,sizeof(dummy));
+    cell_size[0]=x;
+    cell_size[1]=y;
+    cell_size[2]=z;
+    cell_angles[0]=acos(a);
+    cell_angles[1]=acos(b);
+    cell_angles[2]=acos(c);
+    if(a!=0.0||b!=0.0||c!=0.0){
+       LOG_ERROR("LoadCHARMMTraj: periodic cell not parallelepipedic, cell angles might be wrong, handle carefully")
+    }
   }
 
   // read each frame