Scale up sources by 1000

Because the values can end up being very small (and overflow Java's double data type)
we multiply each multiplicand by 1000. This has the effect that the source are no
longer real percent values but the relation between sources stay the same.
We could in theory use BigDecimal instead of double but this would come with a
huge performance hit.