 
             )
 
-        marker_Fe_hat[p] = Fe_hat_t * marker_Fe[p];
+        marker_Fe_hat[p] = (Mat33(1.0) + device_settings.dt * Fe_hat_t) * marker_Fe[p];
     }
 }
 

    const int p = blockIdx.x * blockDim.x + threadIdx.x;
    if (p < device_settings.num_mpm_markers) {
        const real3 xi = pos_marker[p];
        Mat33 velocity_gradient(0);
        LOOP_TWO_RING_GPU(  //
            real3 g_vel(grid_vel[current_node * 3 + 0], grid_vel[current_node * 3 + 1], grid_vel[current_node * 3 + 2]);
            velocity_gradient += OuterProduct(g_vel, dN(xi - current_node_location, inv_bin_edge));  //
            )
        Mat33 Fe_tmp = (Mat33(1.0) + device_settings.dt * velocity_gradient) * marker_Fe[p];
        Mat33 F_tmp = Fe_tmp * marker_Fp[p];

    const int p = blockIdx.x * blockDim.x + threadIdx.x;
    if (p < device_settings.num_mpm_markers) {
        const real3 xi = sorted_pos[p];
        Mat33 Fe_hat_t(0.0f);

        int cx, cy, cz;
        const real bin_edge = device_settings.bin_edge;
