I don't think this has been asked before.
I can pull-off loud and clear when I do it to an open string (e.g 2p0) but I can barely do them if it's to another fret (2p1) I thing part of this may be because as I pull off, i also pull down the string. Say I have to pull of from 7 to 5, after the pull off the note on the 5th fret is half bent to the note on the 6th fret. (And it's really quiet)

Any thoughts as to how to fix this?

I can do all P.O's on the high e without a problem.
sounds like you're just doing the technique wrong.. just pull off hard and downward so you're kinda plucking the string at the same time. and try not to bend the string that'll weaken the sound and it doesn't sound too good. just try pulling off harder. that's all the advice i can really think of right now
I do pull off hard and fast, it's just that I end up pulling the finger that isnt pulling of down as well.
I'd say slow it right down and have a look at how you're actually doing the technique, are you twisting your whole hand to make that one finger pull off? Or are you flicking with that one finger? Muck around with keeping the note you're pulling off to steady, how you're currently pulling off to it and how you could change it to make it work (if that makes sense). Hope I helped, it's kinda hard to explain without showing
I tried slowing it down. The only way to get a good sound is to put the finger that is being pulled of to in the same position as I would when playing a barre chord, but this is difficult on the 2nd/3rd strings.
I think the technique you're using to pull off is the problem rather than the finger you're pulling off to and after having a quick muck around on my guitar the only way I could make the finger I'm pulling off to move at all was to move/flick my whole hand in a quick downward motion, which kinda works but it's not how I normally do it and I'm not sure how effective it would be for longer runs.

Maybe have a look at what's making your finger move rather than how to make it stay still?