diff --git a/src/components/camera.cpp b/src/components/camera.cpp
index 11b5984b6a97117fb8a641749efba5fe89a6ac34..4dc25d8abbfa30128a9c74dc42c5e651fef46880 100644
--- a/src/components/camera.cpp
+++ b/src/components/camera.cpp
@@ -33,8 +33,11 @@ Camera::~Camera(){
 cv::Mat Camera::getDepthFrame(){
     static cv::Mat values = cv::Mat(depth_frame->get_height(), depth_frame->get_width(), CV_16UC1);
     static cv::Mat meters = cv::Mat(depth_frame->get_height(), depth_frame->get_width(), CV_32FC1);
-    values.data = (uchar*)depth_frame->get_data();
-    values.convertTo(meters, CV_32FC1, depth_scale);
+    uchar* new_values = (uchar*)depth_frame->get_data();
+    if(values.data != new_values){
+        values.data = new_values;
+        values.convertTo(meters, CV_32FC1, depth_scale);
+    }
     return meters.clone();
 };
 
diff --git a/src/components/projection.cpp b/src/components/projection.cpp
index 194fddd85074e75a415d88a0be9933465b5ab9e5..93bdd066a73b36b7729b59b596ff7ec9a633e334 100644
--- a/src/components/projection.cpp
+++ b/src/components/projection.cpp
@@ -33,12 +33,9 @@ cv::Point2i Projection::revertRotatePixel(cv::Point2i center, double angle, cv::
     Adjust the projected frame with the topology from the camera to the beamer POV
 */
 void Projection::adjustFrame(cv::Mat_<float> &depth, cv::Mat_<cv::Vec3b> &src, cv::Mat_<cv::Vec3b> &dst, Camera *camera, cv::Point3f beamer_pos){
-
-    // deallocate and reallocate buffers if 1st pass
-    // or dst.size changed, since for all buffers :
-    //      buff.size == dst.size
     
-    // try
+    // update if dst.size changed, since for all buffers :
+    //      buff.size == dst.size
     if(deprojectMap.size() != dst.size()){
         std::vector<cv::Point2f> profil = camera->getAdaptedIntrinsics(dst);
         fxy = profil.at(0);
@@ -50,25 +47,7 @@ void Projection::adjustFrame(cv::Mat_<float> &depth, cv::Mat_<cv::Vec3b> &src, c
     frameMap.create(dst.rows, dst.cols);
     resized_depth.create(dst.rows, dst.cols);
     resized_src.create(dst.rows, dst.cols);
-/*
-    // default
-    if(deprojectMap.empty() || deprojectMap.size() != dst.size()){
-        if(!deprojectMap.empty()){
-            deprojectMap.release();
-            frameMap.release();
-            resized_depth.release();
-            resized_src.release();
-        }
-        deprojectMap.create(dst.rows, dst.cols);
-        frameMap.create(dst.rows, dst.cols);
-        resized_depth.create(dst.rows, dst.cols);
-        resized_src.create(dst.rows, dst.cols);
 
-        std::vector<cv::Point2f> profil = camera->getAdaptedIntrinsics(dst);
-        fxy = profil.at(0);
-        ppxy = profil.at(1);
-    }
-*/
     deprojectMap = cv::Point2i(-1,-1);
     frameMap = cv::Point2i(-1,-1);
 
diff --git a/src/lib/sandbox.cpp b/src/lib/sandbox.cpp
index c0eeb6d79e4c78d8589b734d1716e0316a0f586c..bd551812e9b8881235a20ef84329eefb12154717 100644
--- a/src/lib/sandbox.cpp
+++ b/src/lib/sandbox.cpp
@@ -51,7 +51,7 @@ cv::Mat_<cv::Vec3b> Sandbox::adjustProjection(cv::Mat_<cv::Vec3b> &frame, cv::Ma
     //cv::dilate(projectedFrame, projectedFrame, cv::Mat(), cv::Point(-1, -1), 2, 1, 1);
     //cv::erode(projectedFrame, projectedFrame, cv::Mat(), cv::Point(-1, -1), 2, 1, 1);
     
-    return projectedFrame;
+    return projectedFrame.clone();
 }
 
 cv::Mat_<cv::Vec3b> Sandbox::adjustProjection(cv::Mat_<cv::Vec3b> &frame){