Specifying Z offset in Marlin firmware
Z-offset persitently stored in memory?
Maybe the value of -2.97 for the Z_PROBE_OFFSET_FROM_EXTRUDER  is retained in the EEPROM memory when you upload new firmware.
You could try to send the G-code M502 to the machine to re-load the values from the firmware overwriting currently stored values.
Alternative Z-offset using G-code commands
Note that there is a different (and more common) solution to set the Z-offset using G-code M851, you can do this after you uploaded the firmware to the printer. Sending G-code commands can be done using printer software and a USB connection to the printer through a so-called terminal interface. This can be done in OctoPrint, Repetier-Host, Pronterface (Printrun software suite), and probably many more. Alternatively, you could make seperate G-code (basically text files with extension .g) files with each step in a single file and &quot;print&quot; the files through the SD interface of the printer menu.
The following strategy must be followed to specify the Z offset:

Heat your printer up to your printing temperature and allow a few minutes for it to expand and settle
Reset the existing Z-offset to zero M851 Z0
Home all axes G28
Move the nozzle to the middle of the bed G1 X110 Y110 (if your bed is 220 x 220)
Turn off the software endstops with M211 S0
Move the nozzle down so it is just gripping a piece of standard printer paper
Set the Z-offset to the displayed value. E.g. if the printer displays a Z-Value of -1.23 enter M851 Z-1.23
Store it to the EEPROM M500
Important notice! Enable the endstops again with M211 S1 or the printer head will collide with the bed on the next G28 command