First off, Villamany, if you should read this then I apologize for butchering your tag in earlier posts:)
I only have a working knowledge of this but I took a quick look at some gcode generated by the application and this is what I’ve seen.
1) The 3dpburner laser engraver uses a customized version of GRBL to send the TTL pulses needed to drive the laser through the Z endstop pins on the Ramps controller.
2) Those Z endstop pins are mapped in the firmware to respond to Spindle on commands (M3 codes). the M3 code accepts an S parameter (0-255) to control spindle speed on an actual spindle. This is what’s used to generate the TTL pulses. To create a true grayscale image you can’t just turn the laser off and on, there has to be various shades of gray, different current levels between off and full power.
3) The image2gcode software has a GCODE tab where you can select “Use S” or “Use Z” depending on how your firmware is set up. Select “Use S” if you need to use the M03 codes to drive the laser. The “use z” option doesn’t work for MPCNC because we need our Z axis!
4)Another important setting is in the laser profile tab. The numbers there control the difference in power between off and a full black burn. I think they’re both set to 0 by default so you should make the low value a zero and the high value a 255 and adjust from there.
Why do you need the M103 and M105 codes?