How to modulate solenoid current driver with PWM?
The best way to control the solenoid is with a MOSFET Half bridge with deadtime and avalanche clamp diodes. 

These are many common imported boards used for motor control or discrete IC's that are low cost that can be suitable.  

I normally choose  max rated current >=5x operating current so that a minimal heatsink is needed from I^2R losses.  

You can use 12V and PWM as a BUCK regulator on the solenoid to reduce the average voltage and thus holding current and position against the spring and oil pressure.  You could also monitor current.

Is there a control profile you would like to improve?

If so, define which parameter , the response you want , and tolerances.


  
  The 120Hz PWM will be a loud buzz on the valve which can be eliminated by design according to requirements for loudness.  ( can be improved )
  the 12V rating is intended to accelerate the value to a partial position then reduce to holding current, so the valve performance will be slow this way.  
  Performance is not as good without flow feedback and if flow affects source pressure.
  NRVA4007 (1A diode) will return 2.1A thru the ground return for a duration of L/R with R~1 Ohm for that diode which means it pulses hot when shutoff.
  


Your design may work but poor in some unspecified way.


because you have not thought of all the environmental specfications 
you may have to meet some customer requirements included in your design question. 
-(Thermal drift in flow, acoustic noise etc. EMI on release, Conducted ground noise etc)


diode temp rise with interference causes intermittent gate drive which causes diode failure then Vdrain rises to hundreds of volts if diode is open otherwise short.