Implementing color curves using feComponentTransfer / table is a great way to achieve the desired effect. This filter provides a starting point for creating the curve combo, with the first feComponentTransfer handling the color curves (values were eyeballed and may need fine-tuning) and the second dealing with white-point adjustment.
The order of operations should be correct, although it's worth noting that due to my limited Photoshop expertise, you might need to prioritize the white point adjustment.
<filter id="color-curve" color-interpolation-filters="sRGB">
<feComponentTransfer>
<feFuncR type="table" tableValues="0.0 0.22 0.4 0.6 0.4 0.8 0.86 0.92 0.96 0.98 1.0"/>
<feFuncG type="table" tableValues="0.0 0.0 0.05 0.1 0.22 0.4 0.6 0.83 0.92 0.97 1.0"/>
<feFuncB type="table" tableValues="0.1 0.8"/>
</feComponentTransfer>
<feComponentTransfer>
<feFuncR type="table" tableValues="0.1 1"/>
<feFuncG type="table" tableValues="0.1 1"/>
<feFuncB type="table" tableValues="0.1 1"/>
</feComponentTransfer>
</filter>
I recently authored the documentation on feComponentTransfer for webplatform, which can be found at:
This resource provides a comprehensive guide on how this filter primitive operates, so make sure to carefully review it before proceeding.