diff --git a/cpp/algorithms/iuwt/iuwt_mask.cc b/cpp/algorithms/iuwt/iuwt_mask.cc
index 6ddba04ce41ba57bcf8c7e66ddb6566bd76f8c2a..102a1eb726065575b82c22c41655a7ec1eb8131b 100644
--- a/cpp/algorithms/iuwt/iuwt_mask.cc
+++ b/cpp/algorithms/iuwt/iuwt_mask.cc
@@ -2,7 +2,7 @@
 
 #include "algorithms/iuwt/iuwt_mask.h"
 
-#include <boost/numeric/conversion/bounds.hpp>
+#include <limits>
 
 #include "algorithms/iuwt/iuwt_decomposition.h"
 
@@ -13,7 +13,7 @@ std::string IuwtMask::Summary(const IuwtDecomposition& iuwt) const {
   str << "IUWTMask with " << _masks.size()
       << " scale masks (iuwt: " << iuwt.Summary() << ")\n";
   for (size_t i = 0; i != _masks.size(); ++i) {
-    double maxVal = boost::numeric::bounds<double>::lowest();
+    double maxVal = std::numeric_limits<double>::lowest();
     double minVal = std::numeric_limits<double>::max();
     size_t count = 0;
     for (size_t j = 0; j != _masks[i].size(); ++j) {
@@ -23,7 +23,7 @@ std::string IuwtMask::Summary(const IuwtDecomposition& iuwt) const {
         if (iuwt[i][j] < minVal) minVal = iuwt[i][j];
       }
     }
-    if (maxVal == boost::numeric::bounds<double>::lowest()) {
+    if (maxVal == std::numeric_limits<double>::lowest()) {
       maxVal = std::numeric_limits<double>::quiet_NaN();
       minVal = std::numeric_limits<double>::quiet_NaN();
     }
diff --git a/cpp/algorithms/iuwt_deconvolution_algorithm.cc b/cpp/algorithms/iuwt_deconvolution_algorithm.cc
index 8c8bd8171be7e7fd393f46615809c4cebf30ec29..557337c99bd85d8fb812a318d37726ccec87acbd 100644
--- a/cpp/algorithms/iuwt_deconvolution_algorithm.cc
+++ b/cpp/algorithms/iuwt_deconvolution_algorithm.cc
@@ -4,10 +4,9 @@
 
 #include <algorithm>
 #include <iostream>
+#include <limits>
 #include <memory>
 
-#include <boost/numeric/conversion/bounds.hpp>
-
 #include <aocommon/image.h>
 #include <aocommon/system.h>
 
@@ -127,7 +126,7 @@ float IuwtDeconvolutionAlgorithm::GetMaxAbsWithoutMask(const Image& data,
   x = width;
   y = height;
 
-  float maxVal = boost::numeric::bounds<float>::lowest();
+  float maxVal = std::numeric_limits<float>::lowest();
   for (size_t yi = minY; yi != maxY; ++yi) {
     const float* dataPtr = data.Data() + yi * width;
     for (size_t xi = minX; xi != maxX; ++xi) {
@@ -154,7 +153,7 @@ float IuwtDeconvolutionAlgorithm::GetMaxAbsWithMask(const Image& data,
   x = width;
   y = height;
 
-  float maxVal = boost::numeric::bounds<float>::lowest();
+  float maxVal = std::numeric_limits<float>::lowest();
   for (size_t yi = minY; yi != maxY; ++yi) {
     const float* dataPtr = data.Data() + yi * width;
     const bool* maskPtr = mask_ + yi * width;
diff --git a/cpp/utils/write_model.h b/cpp/utils/write_model.h
index cc7d5bd792bf90175cda54ef7efce118debaee47..2db3d9e0f113eb6cbfac22fefed83533dd8ea0b7 100644
--- a/cpp/utils/write_model.h
+++ b/cpp/utils/write_model.h
@@ -6,8 +6,6 @@
 
 #include <fstream>
 
-#include <boost/filesystem/operations.hpp>
-
 #include <aocommon/radeccoord.h>
 #include <aocommon/uvector.h>