diff --git a/Common/Context.cpp b/Common/Context.cpp
index a705736136a4207a7fcb7f63b873ddb1ccc2534d..2fbfe7d5b762d5e770c5791b295402134278acb7 100644
--- a/Common/Context.cpp
+++ b/Common/Context.cpp
@@ -108,6 +108,7 @@ CTX::CTX() : gamepad(0)
   mesh.minCircPoints = mesh.order = 0;
   mesh.secondOrderLinear = mesh.secondOrderIncomplete = 0;
   mesh.preserveNumberingMsh2 = 1;
+  mesh.ignorePeriodicity= 1;
   mesh.lightLines = 2;
 }
 
diff --git a/Common/Context.h b/Common/Context.h
index 94b93e8be2ce7c5ab44e94135733e59a3ee6a91b..79db244c1561a833cee67b8450bc84dbf47cc45d 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -60,6 +60,7 @@ struct contextMeshOptions {
   int ignorePartBound;
   int NewtonConvergenceTestXYZ;
   int preserveNumberingMsh2;
+  int ignorePeriodicity;
 };
 
 struct contextGeometryOptions {
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index bce2c93adf1d9981dda324788d6ec5750ebddf53..bab4d50592c36abae36c2089f268e95b03265db1 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -1197,6 +1197,9 @@ StringXNumber MeshOptions_Number[] = {
   { F|O, "PreserveNumberingMsh2" , opt_mesh_preserve_numbering_msh2 , 0. ,
     "Preserve element numbering in MSH2 format (will break meshes with multiple "
     "physical groups for a single elementary entity)"},
+  { F|O, "IgnorePeriodicity" , opt_mesh_ignore_periodicity , 0. ,
+    "Ignore alignement of periodic boundaries when reading the mesh "
+    "(used by ParaView plugin)"},
 #if defined(HAVE_BLOSSOM)
   { F|O, "RecombinationAlgorithm" , opt_mesh_algo_recombine , 1 ,
 #else
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 8b0ac7c3c724705226937dcc7c1ed6b84808509a..f46a3b78c1fbbe74bb4aeb317056c2399407fdf5 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -6547,6 +6547,14 @@ double opt_mesh_preserve_numbering_msh2(OPT_ARGS_NUM)
   return CTX::instance()->mesh.preserveNumberingMsh2;
 }
 
+double opt_mesh_ignore_periodicity(OPT_ARGS_NUM)
+{
+  if(action & GMSH_SET)
+    CTX::instance()->mesh.ignorePeriodicity = (int) val;
+  return CTX::instance()->mesh.ignorePeriodicity;
+}
+
+
 double opt_solver_listen(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
diff --git a/Common/Options.h b/Common/Options.h
index f0555d2db9147444032c07ba80ff255f23e97a1b..e4c9568d86d9090ff83198bf3d28619fbf6fceb0 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -541,6 +541,7 @@ double opt_mesh_partition_metis_edge_matching(OPT_ARGS_NUM);
 double opt_mesh_partition_metis_refine_algorithm(OPT_ARGS_NUM);
 double opt_mesh_clip(OPT_ARGS_NUM);
 double opt_mesh_ignore_part_bound(OPT_ARGS_NUM);
+double opt_mesh_ignore_periodicity(OPT_ARGS_NUM);
 double opt_mesh_preserve_numbering_msh2(OPT_ARGS_NUM);
 double opt_solver_listen(OPT_ARGS_NUM);
 double opt_solver_timeout(OPT_ARGS_NUM);
diff --git a/Geo/GModelIO_MSH2.cpp b/Geo/GModelIO_MSH2.cpp
index 304fc3cdb8cfc6bc8770aa1cb8ebe051665c723a..2ed71d51eb6f95657d71e9eb40bc143563bffe68 100644
--- a/Geo/GModelIO_MSH2.cpp
+++ b/Geo/GModelIO_MSH2.cpp
@@ -719,7 +719,7 @@ int GModel::_readMSH2(const std::string &name)
 
   fclose(fp);
 
-  alignPeriodicBoundaries();
+  if(!CTX::instance()->mesh.ignorePeriodicity) alignPeriodicBoundaries();
 
   return postpro ? 2 : 1;
 }
diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi
index 0ba66946b08f1d18df018f60ccaefa40e25e6dad..0174e07b41c8cd9253b36e0c29a66a72ffd68e75 100644
--- a/doc/texinfo/opt_mesh.texi
+++ b/doc/texinfo/opt_mesh.texi
@@ -524,6 +524,11 @@ Preserve element numbering in MSH2 format (will break meshes with multiple physi
 Default value: @code{0}@*
 Saved in: @code{General.OptionsFileName}
 
+@item Mesh.IgnorePeriodicity
+Ignore alignement of periodic boundaries when reading the mesh (used by ParaView plugin)@*
+Default value: @code{0}@*
+Saved in: @code{General.OptionsFileName}
+
 @item Mesh.RecombinationAlgorithm
 Mesh recombination algorithm (0=standard, 1=blossom)@*
 Default value: @code{1}@*