diff --git a/applications/reconstruct/src/ilw/ilw.cpp b/applications/reconstruct/src/ilw/ilw.cpp
index 464e1f57e688d328ccd345ee604156d96dbe4791..973a162e6249588c7a935fb4200ac750f275972f 100644
--- a/applications/reconstruct/src/ilw/ilw.cpp
+++ b/applications/reconstruct/src/ilw/ilw.cpp
@@ -58,7 +58,7 @@ bool ILW::process(ftl::rgbd::FrameSet &fs, cudaStream_t stream) {
         }
         _phase1(fs, win, stream);
         //for (int j=0; j<3; ++j) {
-            _phase2(fs, 0.5f, stream);
+            _phase2(fs, 0.4f, stream);
         //}
 
 		// TODO: Break if no time left
diff --git a/applications/reconstruct/src/ilw/ilw.cu b/applications/reconstruct/src/ilw/ilw.cu
index 488ed7cb1ff894f8037514430e5d7291194865c8..96fd0727d992ec31ef3e79f7ccc6da827dbaf32b 100644
--- a/applications/reconstruct/src/ilw/ilw.cu
+++ b/applications/reconstruct/src/ilw/ilw.cu
@@ -163,12 +163,12 @@ __global__ void move_points_kernel(
 		for (int v=-MOTION_RADIUS; v<=MOTION_RADIUS; ++v) {
 			for (int u=-MOTION_RADIUS; u<=MOTION_RADIUS; ++u) {
 				const float4 vecn = ev.tex2D((int)x+u,(int)y+v);
-				//const float3 pn = make_float3(p.tex2D((int)x+u,(int)y+v));
-				//if (pn.x == MINF) continue;
+				const float3 pn = make_float3(p.tex2D((int)x+u,(int)y+v));
+				if (pn.x == MINF) continue;
 
-				//const float s = ftl::cuda::spatialWeighting(pn, make_float3(world), 0.04f);
-				contrib += vecn.w;
-				vec += vecn.w * vecn;
+				const float s = ftl::cuda::spatialWeighting(pn, make_float3(world), 0.01f);
+				contrib += vecn.w * s;
+				vec += vecn.w * s * vecn;
 			}
 		}