Okay, good news and bad news too I guess.
At first I tried many options and made lightdm be stuck on an boot loop (even the tty’s were affected somehow), luckily I was able to reverted everything back to normal and test one option at a time.
First, I retried putting everything on ~/.xprofile and it didn’t work, to be sure the file was being executed, I put some prints to systemd with journalctl, and the file did execute, but no difference to be seen.
Then, I edited /etc/lightdm/lightdm.conf and pointed to a script with the exact same contents withdisplay-setup-script=/home/myusername/fix_screen.sh. And it ended up working! 
But then after unlocking the greeter the screen went back to the wrong size 
journalctl | grep lightdm
out 28 11:17:17 myusername lightdm[974]: pam_unix(lightdm:session): session closed for user myusername
out 28 11:17:18 myusername systemd[1]: lightdm.service: Deactivated successfully.
out 28 11:17:18 myusername systemd[1]: lightdm.service: Consumed 24.404s CPU time, 118.8M memory peak.
out 28 11:17:52 myusername lightdm[919]: pam_unix(lightdm-greeter:session): session opened for user lightdm(uid=964) by (uid=0)
out 28 11:17:52 myusername systemd-logind[750]: New session c1 of user lightdm.
out 28 11:17:52 myusername (systemd)[926]: pam_warn(systemd-user:setcred): function=[pam_sm_setcred] flags=0x8002 service=[systemd-user] terminal=[] user=[lightdm] ruser=[<unknown>] rhost=[<unknown>]
out 28 11:17:52 myusername (systemd)[926]: pam_unix(systemd-user:session): session opened for user lightdm(uid=964) by lightdm(uid=0)
out 28 11:17:52 myusername systemd-logind[750]: New session 1 of user lightdm.
out 28 11:17:52 myusername systemd[1]: Started Session c1 of User lightdm.
out 28 11:18:03 myusername lightdm[973]: gkr-pam: unable to locate daemon control file
out 28 11:18:03 myusername lightdm[973]: gkr-pam: stashed password to try later in open session
out 28 11:18:03 myusername systemd[1]: session-c1.scope: Killing process 919 (lightdm) with signal SIGTERM.
out 28 11:18:03 myusername systemd[1]: session-c1.scope: Killing process 937 (lightdm-gtk-gre) with signal SIGTERM.
out 28 11:18:03 myusername systemd[1]: Stopping Session c1 of User lightdm...
out 28 11:18:03 myusername lightdm[919]: pam_unix(lightdm-greeter:session): session closed for user lightdm
out 28 11:18:03 myusername systemd[1]: Stopped Session c1 of User lightdm.
out 28 11:18:03 myusername lightdm[973]: pam_unix(lightdm:session): session opened for user myusername(uid=1000) by myusername(uid=0)
out 28 11:18:04 myusername lightdm[973]: gkr-pam: unlocked login keyring
out 28 11:18:04 myusername echo[1029]: Testing lightdm from .xprofile, xprofile executed
out 28 11:18:04 myusername echo[1032]: Testing lightdm from .xprofile, 1st executed
out 28 11:18:04 myusername echo[1035]: Testing lightdm from .xprofile, 2nd executed
out 28 11:18:05 myusername echo[1038]: Testing lightdm from .xprofile, 3rd executed
out 28 11:18:13 myusername (sd-pam)[928]: pam_unix(systemd-user:session): session closed for user lightdm
out 28 11:20:03 myusername sudo[1506]: myusername : TTY=pts/0 ; PWD=/home/myusername ; USER=root ; COMMAND=/usr/bin/nvim /etc/lightdm/lightdm.conf
out 28 11:20:33 myusername lightdm[973]: pam_unix(lightdm:session): session closed for user myusername
out 28 11:20:34 myusername lightdm[897]: Error terminating login1 session: GDBus.Error:org.freedesktop.login1.NoSuchSession: No session '2' known
out 28 11:20:34 myusername systemd[1]: lightdm.service: Deactivated successfully.
out 28 11:20:34 myusername systemd[1]: lightdm.service: Consumed 6.733s CPU time, 116.7M memory peak.
out 28 11:21:07 myusername echo[922]: Testing lightdm from script, xprofile executed
out 28 11:21:07 myusername echo[925]: Testing lightdm from script, 1st executed
out 28 11:21:07 myusername lightdm[927]: X Error of failed request: BadMatch (invalid parameter attributes)
out 28 11:21:07 myusername lightdm[927]: Major opcode of failed request: 140 (RANDR)
out 28 11:21:07 myusername lightdm[927]: Minor opcode of failed request: 29 (RRSetPanning)
out 28 11:21:07 myusername lightdm[927]: Serial number of failed request: 28
out 28 11:21:07 myusername lightdm[927]: Current serial number in output stream: 28
out 28 11:21:07 myusername echo[928]: Testing lightdm from script, 2nd executed
out 28 11:21:07 myusername lightdm[930]: xrandr: specified screen 1920x1080 not large enough for output LVDS-1 (2048x1536+0+0)
out 28 11:21:08 myusername lightdm[930]: X Error of failed request: BadMatch (invalid parameter attributes)
out 28 11:21:08 myusername lightdm[930]: Major opcode of failed request: 140 (RANDR)
out 28 11:21:08 myusername lightdm[930]: Minor opcode of failed request: 29 (RRSetPanning)
out 28 11:21:08 myusername lightdm[930]: Serial number of failed request: 30
out 28 11:21:08 myusername lightdm[930]: Current serial number in output stream: 30
out 28 11:21:08 myusername echo[931]: Testing lightdm from script, 3rd executed
out 28 11:21:08 myusername lightdm[934]: pam_unix(lightdm-greeter:session): session opened for user lightdm(uid=964) by (uid=0)
out 28 11:21:08 myusername systemd-logind[749]: New session c1 of user lightdm.
out 28 11:21:09 myusername (systemd)[941]: pam_warn(systemd-user:setcred): function=[pam_sm_setcred] flags=0x8002 service=[systemd-user] terminal=[] user=[lightdm] ruser=[<unknown>] rhost=[<unknown>]
out 28 11:21:09 myusername (systemd)[941]: pam_unix(systemd-user:session): session opened for user lightdm(uid=964) by lightdm(uid=0)
out 28 11:21:09 myusername systemd-logind[749]: New session 1 of user lightdm.
out 28 11:21:09 myusername systemd[1]: Started Session c1 of User lightdm.
out 28 11:21:59 myusername lightdm[989]: gkr-pam: unable to locate daemon control file
out 28 11:21:59 myusername lightdm[989]: gkr-pam: stashed password to try later in open session
out 28 11:21:59 myusername systemd[1]: session-c1.scope: Killing process 934 (lightdm) with signal SIGTERM.
out 28 11:21:59 myusername systemd[1]: session-c1.scope: Killing process 952 (lightdm-gtk-gre) with signal SIGTERM.
out 28 11:21:59 myusername systemd[1]: Stopping Session c1 of User lightdm...
out 28 11:21:59 myusername lightdm[934]: pam_unix(lightdm-greeter:session): session closed for user lightdm
out 28 11:21:59 myusername systemd[1]: Stopped Session c1 of User lightdm.
out 28 11:21:59 myusername lightdm[989]: pam_unix(lightdm:session): session opened for user myusername(uid=1000) by myusername(uid=0)
out 28 11:22:00 myusername lightdm[989]: gkr-pam: unlocked login keyring
out 28 11:22:09 myusername (sd-pam)[943]: pam_unix(systemd-user:session): session closed for user lightdm
out 28 11:23:44 myusername echo[2020]: Testing lightdm from script, xprofile executed
out 28 11:23:44 myusername echo[2023]: Testing lightdm from script, 1st executed
out 28 11:23:44 myusername echo[2026]: Testing lightdm from script, 2nd executed
out 28 11:23:45 myusername echo[2029]: Testing lightdm from script, 3rd executed
Furthermore, running the scriptc manually or not, always gives some warnings, that I think can be ignored but just in case:
myusername% sh fix_screen.sh
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 29 (RRSetPanning)
Serial number of failed request: 28
Current serial number in output stream: 28
xrandr: specified screen 1920x1080 not large enough for output LVDS-1 (2048x1536+0+0)
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 29 (RRSetPanning)
Serial number of failed request: 30
Current serial number in output stream: 30
And finally, the script itself
#!/bin/sh
systemd-cat echo "Testing lightdm from script, xprofile executed"
xrandr --output "LVDS-1" --mode 2048x1536 --panning 2048x1536
systemd-cat echo "Testing lightdm from script, 1st executed"
xrandr --output "LVDS-1" --mode 2048x1536 --panning 1920x1080
systemd-cat echo "Testing lightdm from script, 2nd executed"
xrandr --output "LVDS-1" --fb 1920x1080
systemd-cat echo "Testing lightdm from script, 3rd executed"
So, do I really need to run this script somewhere else if I want my screen to always have the correct size? I wanted any instance of X to be the correct size but don’t really like the idea to be spreading configurations everywhere.