diff --git a/src/lib/Prop.re b/src/lib/Prop.re
index 4221cb98..eac149ff 100644
--- a/src/lib/Prop.re
+++ b/src/lib/Prop.re
@@ -61,10 +61,19 @@ module Value = {
       let newDistribution =
         GenericDistribution.renderIfNeeded(~sampleCount=1000, r);
       switch (newDistribution) {
-      | Some({generationSource: Shape(Mixed({continuous: n, discrete: d}))}) =>
+      | Some({
+          generationSource:
+            Shape(
+              Mixed({
+                continuous: n,
+                discrete: d,
+                discreteProbabilityMassFraction: f,
+              }),
+            ),
+        }) =>
         
            Shape.Continuous.toJs} />
-          {Shape.Discrete.render(d)}
+          {d |> Shape.Discrete.scaleYToTotal(f) |> Shape.Discrete.render}
         
       | None => "Something went wrong" |> ReasonReact.string
       | _ => 
diff --git a/src/lib/Shape.re b/src/lib/Shape.re
index 914f2f51..c98500f8 100644
--- a/src/lib/Shape.re
+++ b/src/lib/Shape.re
@@ -38,7 +38,7 @@ module Discrete = {
       Belt.Array.zip(p.xs, p.ys)
       ->Belt.Array.reduce([||], (items, (x, y)) =>
           switch (_lastElement(items)) {
-          | Some((_, yLast)) => [|(x, y +. yLast)|]
+          | Some((_, yLast)) => E.A.append(items, [|(x, y +. yLast)|])
           | None => [|(x, y)|]
           }
         )
@@ -46,6 +46,16 @@ module Discrete = {
     fromArrays(xs, ys);
   };
 
+  let ySum = (t: t) => {
+    E.A.fold_left((a, b) => a +. b, 0., t.ys);
+  };
+
+  let scaleYToTotal = (totalDesired, t: t): t => {
+    let currentSum = ySum(t);
+    let difference = totalDesired /. currentSum;
+    {xs: t.xs, ys: t.ys |> E.A.fmap(y => y *. difference)};
+  };
+
   let render = (t: t) =>
     Belt.Array.zip(t.xs, t.ys)
     |> E.A.fmap(((x, y)) =>
@@ -109,11 +119,11 @@ module Mixed = {
       | {
           continuous: ADDS_TO_1,
           discrete: ADDS_TO_CORRECT_PROBABILITY,
-          discreteProbabilityMass: Some(r),
+          discreteProbabilityMass: None,
         } =>
-        Some(
-          make(~continuous, ~discrete, ~discreteProbabilityMassFraction=r),
-        )
+        let discreteProbabilityMassFraction = Discrete.ySum(discrete);
+        let discrete = Discrete.scaleYToTotal(1.0, discrete);
+        Some(make(~continuous, ~discrete, ~discreteProbabilityMassFraction));
       | _ => None
       };
   };
diff --git a/src/utility/Guesstimator.re b/src/utility/Guesstimator.re
index 995616d9..560ca798 100644
--- a/src/utility/Guesstimator.re
+++ b/src/utility/Guesstimator.re
@@ -28,7 +28,7 @@ module Internals = {
     let assumptions: Shape.Mixed.Builder.assumptions = {
       continuous: ADDS_TO_1,
       discrete: ADDS_TO_CORRECT_PROBABILITY,
-      discreteProbabilityMass: Some(0.3),
+      discreteProbabilityMass: None,
     };
     Shape.Mixed.Builder.build(
       ~continuous=toContinous(r),