diff --git a/Core/Computation/ParticleLayoutComputation.cpp b/Core/Computation/ParticleLayoutComputation.cpp
index e4d21fbd1664f8f5cfb3bb4131bce8803a038e5c..73590d66e31c8e872e6aadac0ae6448d48e6b585 100644
--- a/Core/Computation/ParticleLayoutComputation.cpp
+++ b/Core/Computation/ParticleLayoutComputation.cpp
@@ -50,9 +50,11 @@ bool ParticleLayoutComputation::eval(
             return false;
         double alpha_f = it->getAlphaMean();
         size_t n_layers = mp_multilayer->getNumberOfLayers();
-        if (n_layers > 1 && alpha_f < 0)  // skip transmission for multilayers (n>1)
-            continue;
-        it->setIntensity(p_strategy->evaluate(*it) * total_surface_density);
+        if (n_layers > 1 && alpha_f < 0) {
+            it->setIntensity(0.0); // zero for transmission with multilayers (n>1)
+        } else {
+            it->setIntensity(p_strategy->evaluate(*it) * total_surface_density);
+        }
         counter.stepProgress(progress);
     }
     return true;
diff --git a/Core/Computation/SpecularComputation.cpp b/Core/Computation/SpecularComputation.cpp
index 71756faf5be9c675af353b2e2136317231743d7d..59b12f1e6d3cb2ec95763f04ca6b98b4fb77ae46 100644
--- a/Core/Computation/SpecularComputation.cpp
+++ b/Core/Computation/SpecularComputation.cpp
@@ -42,6 +42,8 @@ bool SpecularComputation::eval(
                 continue;
             double intensity = std::norm(R)*sin_alpha_i/solid_angle;
             it->setIntensity(intensity);
+        } else {
+            it->setIntensity(0.0);
         }
     }
     return true;