diff --git a/src/filterBeforeBox.cpp b/src/filterBeforeBox.cpp
index 052218418487f59760a5081e7203458bf14b7be4..b9a6255d9e6305ca9013cc0d5255205f72b17274 100644
--- a/src/filterBeforeBox.cpp
+++ b/src/filterBeforeBox.cpp
@@ -112,14 +112,7 @@ bool FilterBeforeBox::getXmlSub(QDomElement &subSubElem)
         }
         if(subSubElem.hasAttribute("VALUE"))
         {
-            try
-            {
-                setValue(mUi->filterBorderParamSize, subSubElem.attribute("VALUE").toInt());
-            }
-            catch(std::domain_error &e)
-            {
-                PCritical(nullptr, "Out-of-range value", QString::fromStdString(e.what()));
-            }
+            setValue(mUi->filterBorderParamSize, subSubElem.attribute("VALUE").toInt());
         }
         // bgColor still needs to be read by control
         return false;
diff --git a/src/intrinsicBox.cpp b/src/intrinsicBox.cpp
index f3faaa8e093915d2ef30a7b4a5de1b42b73e8528..bf96c6a66fabb1309b9e799487ba4034a521d00c 100644
--- a/src/intrinsicBox.cpp
+++ b/src/intrinsicBox.cpp
@@ -77,34 +77,24 @@ void IntrinsicBox::setIntrinsicCameraParams(const IntrinsicCameraParams &params)
         // don't want to send signals for intermediate params
         const QSignalBlocker blocker(this);
 
-        try
-        {
-            setValue(mUi->fx, params.getFx());
-            setValue(mUi->fy, params.getFy());
-            setValue(mUi->cx, params.getCx());
-            setValue(mUi->cy, params.getCy());
-            setValue(mUi->r2, static_cast<double>(params.distortionCoeffs.at<float>(0)));
-            setValue(mUi->r4, static_cast<double>(params.distortionCoeffs.at<float>(1)));
-            setValue(mUi->tx, static_cast<double>(params.distortionCoeffs.at<float>(2)));
-            setValue(mUi->ty, static_cast<double>(params.distortionCoeffs.at<float>(3)));
-            setValue(mUi->r6, static_cast<double>(params.distortionCoeffs.at<float>(4)));
-            setValue(mUi->k4, static_cast<double>(params.distortionCoeffs.at<float>(5)));
-            setValue(mUi->k5, static_cast<double>(params.distortionCoeffs.at<float>(6)));
-            setValue(mUi->k6, static_cast<double>(params.distortionCoeffs.at<float>(7)));
-            setValue(mUi->s1, static_cast<double>(params.distortionCoeffs.at<float>(8)));
-            setValue(mUi->s2, static_cast<double>(params.distortionCoeffs.at<float>(9)));
-            setValue(mUi->s3, static_cast<double>(params.distortionCoeffs.at<float>(10)));
-            setValue(mUi->s4, static_cast<double>(params.distortionCoeffs.at<float>(11)));
-            setValue(mUi->taux, static_cast<double>(params.distortionCoeffs.at<float>(12)));
-            setValue(mUi->tauy, static_cast<double>(params.distortionCoeffs.at<float>(13)));
-        }
-        catch(std::domain_error &e)
-        {
-            std::stringstream ss;
-            ss << e.what() << "\nUsing old values instead";
-            PCritical(nullptr, "Out-of-range value", QString::fromStdString(ss.str()));
-            return;
-        }
+        setValue(mUi->fx, params.getFx());
+        setValue(mUi->fy, params.getFy());
+        setValue(mUi->cx, params.getCx());
+        setValue(mUi->cy, params.getCy());
+        setValue(mUi->r2, static_cast<double>(params.distortionCoeffs.at<float>(0)));
+        setValue(mUi->r4, static_cast<double>(params.distortionCoeffs.at<float>(1)));
+        setValue(mUi->tx, static_cast<double>(params.distortionCoeffs.at<float>(2)));
+        setValue(mUi->ty, static_cast<double>(params.distortionCoeffs.at<float>(3)));
+        setValue(mUi->r6, static_cast<double>(params.distortionCoeffs.at<float>(4)));
+        setValue(mUi->k4, static_cast<double>(params.distortionCoeffs.at<float>(5)));
+        setValue(mUi->k5, static_cast<double>(params.distortionCoeffs.at<float>(6)));
+        setValue(mUi->k6, static_cast<double>(params.distortionCoeffs.at<float>(7)));
+        setValue(mUi->s1, static_cast<double>(params.distortionCoeffs.at<float>(8)));
+        setValue(mUi->s2, static_cast<double>(params.distortionCoeffs.at<float>(9)));
+        setValue(mUi->s3, static_cast<double>(params.distortionCoeffs.at<float>(10)));
+        setValue(mUi->s4, static_cast<double>(params.distortionCoeffs.at<float>(11)));
+        setValue(mUi->taux, static_cast<double>(params.distortionCoeffs.at<float>(12)));
+        setValue(mUi->tauy, static_cast<double>(params.distortionCoeffs.at<float>(13)));
 
         if(params.reprojectionError == std::numeric_limits<float>::quiet_NaN())
         {
diff --git a/src/logoItem.cpp b/src/logoItem.cpp
index 0b1d675bafb4b5cc5466a077bd3f13c90a8f703f..2d1d2ac79e9ac41d0b793570b9251a1b2d2f2613 100644
--- a/src/logoItem.cpp
+++ b/src/logoItem.cpp
@@ -68,5 +68,3 @@ void LogoItem::fadeIn()
     mFadeAnimation->setDuration(mFadeDuration);
     mFadeAnimation->start();
 }
-
-#include "moc_logoItem.cpp"
diff --git a/src/petrack.cpp b/src/petrack.cpp
index ac259d06c2e16f6542c15b8460cd50b9f30e68fc..ee949ef81546d903592bf6e9490cb67c685d4936 100644
--- a/src/petrack.cpp
+++ b/src/petrack.cpp
@@ -686,6 +686,11 @@ void Petrack::openProject(QString fileName, bool openSeq) // default fileName=""
             PCritical(this, tr("PeTrack"), tr("Cannot open %1:\n%2.").arg(fileName, file.errorString()));
             return;
         }
+
+        QDomDocument oldSettings;
+        QString      oldProFilename = mProFileName;
+        saveXml(oldSettings);
+
         resetSettings();
         QDomDocument doc("PETRACK"); // eigentlich Pfad zu Beschreibungsdatei fuer Dateiaufbau
         if(!doc.setContent(&file))
@@ -711,7 +716,20 @@ void Petrack::openProject(QString fileName, bool openSeq) // default fileName=""
                         .arg(fileName, mPetrackVersion, root.attribute("VERSION")));
             }
         }
-        openXml(doc, openSeq);
+        try
+        {
+            openXml(doc, openSeq);
+        }
+        catch(std::domain_error &e)
+        {
+            // reset to settings before trying to load new file
+            openXml(oldSettings);
+            setProFileName(oldProFilename);
+
+            auto errorStr = QString{"Error during reading of pet file:\n%1"}.arg(e.what());
+            PCritical(this, "Could not read pet-file", errorStr);
+            return;
+        }
         mLastTrackerExport = mTrcFileName;
 
         updateWindowTitle();
diff --git a/tests/unit_test/tst_intrinsicBox.cpp b/tests/unit_test/tst_intrinsicBox.cpp
index 611fcd5dbd5d9f9c35ed53b27deb9d736215888d..bb21d7bbf7d65d8eecdf273757636d6fdaae7ea0 100644
--- a/tests/unit_test/tst_intrinsicBox.cpp
+++ b/tests/unit_test/tst_intrinsicBox.cpp
@@ -126,10 +126,9 @@ TEST_CASE("IntrinsicCameraParams values")
         {
             params.distortionCoeffs.at<float>(12) = 56468;
             auto oldParams                        = intrBox.getIntrinsicCameraParams();
-            THEN("The values do not get changed")
+            THEN("An exception is thrown")
             {
-                intrBox.setIntrinsicCameraParams(params);
-                CHECK(intrBox.getIntrinsicCameraParams() == oldParams);
+                CHECK_THROWS_AS(intrBox.setIntrinsicCameraParams(params), std::domain_error);
             }
         }