You may try a logarithmic rescaling of the actual values of p, or indirectly with a ColorFunction.
p
ColorFunction
If your data for f are all positive you may try ColorFunction -> Function[{x, y, z}, Hue[Log[z]].
f
ColorFunction -> Function[{x, y, z}, Hue[Log[z]]
If the minimum value of f is negative, try something like ColorFunction -> Function[{x, y, z}, Hue[Log[z-2*minimumValue]].
ColorFunction -> Function[{x, y, z}, Hue[Log[z-2*minimumValue]]
I tried ColorFunction, but maybe I don't understand how to use it. I can post process the numbers to scale them though, before messing with Mathematica. Log(-x) is imaginary, so that complicates things. Thanks, I was hoping I was missing something obvious, but a little more work to make the numbers nice won't be that difficult.