diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index d6a2b9183b590bb93d7ba0e297a094d7eeb24d0b..a1c6a5b0cf9f4b8150b9c6977dc2991ed1229532 100644
--- a/Common/GmshMessage.cpp
+++ b/Common/GmshMessage.cpp
@@ -651,7 +651,7 @@ void Msg::ExchangeOnelabParameter(const std::string &key,
   bool noRange = true, noChoices = true, noLoop = true, noGraph = true;
   if(ps.size()){
     if(ps[0].getReadOnly())
-      ps[0].setValue(val[0]); // use value from gmsh
+      ps[0].setValue(val[0]); // use value from gmsh (so it is updated if necessary)
     else
       val[0] = ps[0].getValue(); // use value from server
     // keep track of these attributes, which can be changed server-side
diff --git a/Solver/eigenSolver.cpp b/Solver/eigenSolver.cpp
index f4658710ab0688657f61f433c68f6438d258b4b4..f8a32b8ead21712b7fc1cf7c200db21f462058dd 100644
--- a/Solver/eigenSolver.cpp
+++ b/Solver/eigenSolver.cpp
@@ -105,7 +105,7 @@ bool eigenSolver::solve(int numEigenValues, std::string which)
     Msg::Error("SLEPc diverged after %d iterations", its);
   else if(reason == EPS_DIVERGED_BREAKDOWN)
     Msg::Error("SLEPc generic breakdown in method");
-#if !(PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR == 2))) // petsc-dev
+#if !(PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
   else if(reason == EPS_DIVERGED_NONSYMMETRIC)
     Msg::Error("The operator is nonsymmetric");
 #endif
@@ -154,7 +154,7 @@ bool eigenSolver::solve(int numEigenValues, std::string which)
       }
        _eigenVectors.push_back(ev);
     }
-#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR == 2))) // petsc-dev
+#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
     _try(VecDestroy(&xr));
     _try(VecDestroy(&xi));
 #else
@@ -163,7 +163,7 @@ bool eigenSolver::solve(int numEigenValues, std::string which)
 #endif
   }
 
-#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR == 2))) // petsc-dev
+#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
   _try(EPSDestroy(&eps));
 #else
   _try(EPSDestroy(eps));
diff --git a/Solver/linearSystemPETSc.cpp b/Solver/linearSystemPETSc.cpp
index 527cb74eb75f27b4147b456592d787fe4904c039..56fc1a453be065cdceda3bd16c1ec093612f7e5f 100644
--- a/Solver/linearSystemPETSc.cpp
+++ b/Solver/linearSystemPETSc.cpp
@@ -164,7 +164,7 @@ bool linearSystemPETScBlockDouble::isAllocated() const
 void linearSystemPETScBlockDouble::clear()
 {
   if(_isAllocated){
-#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR == 2))) // petsc-dev
+#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
     MatDestroy(&_a);
     VecDestroy(&_x);
     VecDestroy(&_b);
diff --git a/Solver/linearSystemPETSc.hpp b/Solver/linearSystemPETSc.hpp
index 49d76db9308172ba394534730aeff0ee7a2b0ee5..655642f0723fd7226b0bdeb95d75bc8a027d0e63 100644
--- a/Solver/linearSystemPETSc.hpp
+++ b/Solver/linearSystemPETSc.hpp
@@ -3,7 +3,7 @@
 #include <petscksp.h>
 #include "linearSystemPETSc.h"
 
-#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR == 2))) // petsc-dev
+#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
 #define PetscTruth PetscBool
 #define PetscOptionsGetTruth PetscOptionsGetBool
 #endif
@@ -47,7 +47,7 @@ linearSystemPETSc<scalar>::~linearSystemPETSc()
 {
   clear();
   if(_kspAllocated)
-#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR == 2))) // petsc-dev
+#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
     _try(KSPDestroy(&_ksp));
 #else
     _try(KSPDestroy(_ksp));
@@ -152,7 +152,7 @@ template <class scalar>
 void linearSystemPETSc<scalar>::clear()
 {
   if(_isAllocated){
-#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR == 2))) // petsc-dev
+#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
     _try(MatDestroy(&_a));
     _try(VecDestroy(&_x));
     _try(VecDestroy(&_b));