diff --git a/Framework/Geometry/inc/MantidGeometry/Crystal/OrientedLattice.h b/Framework/Geometry/inc/MantidGeometry/Crystal/OrientedLattice.h
index f081fea41b7e80819a4f8e52bc263d585c611cbd..3eff8c2a26d7d1c0d80f8777daba8c3744c284b9 100644
--- a/Framework/Geometry/inc/MantidGeometry/Crystal/OrientedLattice.h
+++ b/Framework/Geometry/inc/MantidGeometry/Crystal/OrientedLattice.h
@@ -56,7 +56,7 @@ public:
   // Access private variables
   const Kernel::DblMatrix &getU() const;
   const Kernel::DblMatrix &getUB() const;
-  void setU(const Kernel::DblMatrix &newU, const bool force = false);
+  void setU(const Kernel::DblMatrix &newU, const bool force = true);
   void setUB(const Kernel::DblMatrix &newUB);
   // get u and v vectors for Horace/Mslice
   Kernel::V3D getuVector() const;
diff --git a/Framework/Geometry/src/Crystal/OrientedLattice.cpp b/Framework/Geometry/src/Crystal/OrientedLattice.cpp
index 13488988894398dfcb9de255805147d836ea50cc..ee471a8167d26f58b09306866b09262252b870a7 100644
--- a/Framework/Geometry/src/Crystal/OrientedLattice.cpp
+++ b/Framework/Geometry/src/Crystal/OrientedLattice.cpp
@@ -104,7 +104,8 @@ void OrientedLattice::setU(const DblMatrix &newU, const bool force) {
 /** Sets the UB matrix and recalculates lattice parameters
   @param newUB :: the new UB matrix*/
 void OrientedLattice::setUB(const DblMatrix &newUB) {
-  if (UB.determinant() > 0) {
+  //check if determinant is close to 0. The 1e-10 value is arbitrary
+  if (std::fabs(newUB.determinant()) > 1e-10) {
     UB = newUB;
     DblMatrix newGstar, B;
     newGstar = newUB.Tprime() * newUB;
@@ -113,7 +114,7 @@ void OrientedLattice::setUB(const DblMatrix &newUB) {
     B.Invert();
     U = newUB * B;
   } else
-    throw std::invalid_argument("determinant of UB is not greater than 0");
+    throw std::invalid_argument("determinant of UB is too close to 0");
 }
 
 /** Calculate the hkl corresponding to a given Q-vector