diff --git a/poisson/discrete/discrete_poisson.py b/poisson/discrete/discrete_poisson.py
index f4069a369582b26ffd90063fda23c0c0add7703b..58e84624cc7a92f7e17534f1feb92a88113ca734 100644
--- a/poisson/discrete/discrete_poisson.py
+++ b/poisson/discrete/discrete_poisson.py
@@ -408,16 +408,17 @@ def prepare_capacitance_sparse(points_firstneig, dielectric_val,
                                      / (dielectric_val[point]
                                         + dielectric_val[fneig]))
 
-                data[element_id] = (ridges_capacitance[ridge]
-                                    * dielectric_factor)
+                data[element_id] = -1 * (ridges_capacitance[ridge]
+                                         * dielectric_factor)
 
-                diag_data = (diag_data + data[element_id])
+                # Diagonal elements don't have the minus sign.
+                diag_data = (diag_data + (-1 * data[element_id]))
 
                 element_id +=1
 
             column[element_id] = point
             row[element_id] = point
-            data[element_id] = - diag_data
+            data[element_id] = diag_data
 
             element_id +=1