Scaling decimal numbers up within bounds of limit
double smallest = Double.MAX_VALUE;


This is even larger:

double smallest = Double.POSITIVE_INFINITY;




    if (exp &lt; smallest) {
        smallest = exp;
    }


Unless you need to do something else in the body, like remembering an index, this can better be replaced with:

    smallest = Math.min(smallest, exp);




Anti-pattern: The -1 you describe is a 'magic value', which in this case, after a bit of reverse engineering, just divides scaling by 10, like so:

double scaling = Math.pow(10, Math.abs(smallest)) / 10;


This is clearer to casual readers of your code, but still a magic number unless rationalized in the comments.



Pitfall: There is no check if entry.raw is actually not larger than one. If it is, your approach breaks.



Performance / Precision / Confusing: don't calculate base-e log for every number and then base-10 exp (that combination alone is already confusing enough). Just find the very smallest number (not the smallest exponent) and set double scaling = 1.0 / smallest;. To get a number-correct result to your current implementation, because of the base confusion, it would be: 

double scaling = 40.287487705590465 / smallest;


Note that this just moves the 'magic number' problem. You need to rationally explain the value here, and not just state that it 'packs things better'.