diff --git a/lbmpy_tests/test_fluctuating_lb.py b/lbmpy_tests/test_fluctuating_lb.py
index 58468f407db2b28c6cc0f9ec11549f3215c1d9b3..4055b0e232e5f1983d977795f47427c8cd05256d 100644
--- a/lbmpy_tests/test_fluctuating_lb.py
+++ b/lbmpy_tests/test_fluctuating_lb.py
@@ -115,6 +115,9 @@ def get_fluctuating_lb(size=None, kT=None, omega_shear=None, omega_bulk=None, om
     dh.fill(rho.name, rho_0)
     dh.fill(u.name, np.nan, ghost_layers=True, inner_ghost_layers=True)
     dh.fill(u.name, 0)
+    dh.fill(force_field.name, np.nan,
+            ghost_layers=True, inner_ghost_layers=True)
+    dh.fill(force_field.name, 0)
     dh.run_kernel(init_kernel)
 
     # time loop
@@ -133,11 +136,11 @@ def get_fluctuating_lb(size=None, kT=None, omega_shear=None, omega_bulk=None, om
     return dh, time_loop
 
 
-def test_resting_fluid():
+def test_resting_fluid(target="cpu"):
     rho_0 = 0.86
     kT = 4E-4
     L = [60]*3
-    dh, time_loop = get_fluctuating_lb(size=L[0], target="cpu",
+    dh, time_loop = get_fluctuating_lb(size=L[0], target=target,
                                        rho_0=rho_0, kT=kT,
                                        omega_shear=0.8, omega_bulk=0.5, omega_even=.04, omega_odd=0.3)
 
@@ -200,3 +203,42 @@ def test_resting_fluid():
         p_av_expected = np.diag([rho_0*c_s**2 + kT]*3)
         np.testing.assert_allclose(
             np.mean(res_pressure, axis=0), p_av_expected, atol=c_s**2/2000)
+
+
+def test_point_force(target="cpu"):
+    """Test momentum balance for thermalized fluid with applied poitn forces"""
+    rho_0 = 0.86
+    kT = 4E-4
+    L = [8]*3
+    dh, time_loop = get_fluctuating_lb(size=L[0], target=target,
+                                       rho_0=rho_0, kT=kT,
+                                       omega_shear=0.8, omega_bulk=0.5, omega_even=.04, omega_odd=0.3)
+
+    # Test
+    t = 0
+    # warm up
+    t = time_loop(t, 100)
+
+    introduced_momentum = np.zeros(3)
+    for i in range(100):
+        point_force = 1E-5*(np.random.random(3) - .5)
+        introduced_momentum += point_force
+
+        # Note that ghost layers are included in the indexing
+        force_pos = np.random.randint(1, L[0]-2, size=3)
+
+        dh.cpu_arrays["force"][force_pos[0],
+                               force_pos[1], force_pos[2]] = point_force
+        t = time_loop(t, 1)
+        res_u = dh.gather_array("u").reshape((-1, 3))
+        res_rho = dh.gather_array("rho").reshape((-1,))
+
+        # mass conservation
+        np.testing.assert_allclose(np.mean(res_rho), rho_0, atol=3E-12)
+
+        # momentum conservation
+        momentum = np.dot(res_rho, res_u)
+        np.testing.assert_allclose(
+            momentum, introduced_momentum + 0.5 * point_force, atol=1E-10)
+        dh.cpu_arrays["force"][force_pos[0],
+                               force_pos[1], force_pos[2]] = np.zeros(3)