I experienced something similar. With gtsave, I think the other calls like vwidth and vheight are not being properly carried into the webshot function. I tried something similar with the webshot2::webshot function and it did not seem to respect any of the calls like vwidth when converting to pdf, as it outputted the same files regardless of what I put in. I had some success using the first version of webshot and converting to pdf. It might take some tinkering with vwidth, vheight, and the zoom function. I have not tried it with png files though.
https://wch.github.io/webshot/index.html
If there is a fix using webshot2::webshot that would be great.