This is what improved responsiveness for two finger scrolling for me (ThinkPad T14 Gen1, Ubuntu 22.04):
Get xinput props for your touchpad:
$ xinput list-props "SynPS/2 Synaptics TouchPad"
Set scrolling pixel distance:
$ xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Scrolling Pixel Distance" 10
The new setting becomes effective immediately.
In my case it was set to 15 and lowering it to 10 significantly improved responsiveness of two finger scrolling. It turned out that values below 10 are not allowed. Could be a different value for your touchpad (I don't know), so you have to try.
This worked for me (firefox 57.0.4, Arch Linux):
open in firefox to set about:config (default is 2).dom.w3c_touch_events.enabled=1
edit and add /etc/security/pam_env.confMOZ_USE_XINPUT2 DEFAULT=1
reboot and restart firefox
(see also How can I get Firefox to recognize multitouch gestures on a touch screen? )
"Inverted" scrolling/movement has been an age old problem especially for video games. The inherent problem is the "logical" reaction to moving down isn't always clear for non-touchscreens.
Why does moving down move the item up? Put your finger in the middle of a piece of paper and fix your eyes to the middle of the page. Press your finger down and move it downward--the paper has moved "down" but your eyes are closer to the "top" of the page, this is what natural scrolling is emulating. It feels much more natural on a touchscreen because the pixels are acting exactly as the paper is, on a touch pad the feedback is a bit less clear, and can take some getting used to either way.
What you're seeing is a conflict in what's really the conflict between direct manipulation (move the trackpad up to move the cursor up) and not-quite-direct manipulation ("dragging" the page down, with the same trackpad). I'm not convinced there's a real solution to this other than to allow the user to change this at will, as video games generally do, and make the defaults internally consistent so users can learn how to operate them easily.