The original issue is because that user's monitor does not support the screen resolution you are trying to set. This is why many games and even Windows will display a dialog box asking if the resolution change worked, with a countdown timer that reverts to the previous setting if the user does not click "Ok".
Some games will also provide the graphics options in a standard Windows dialog before the game itself starts. This allows the user to select a graphics mode that they know their card and monitor support.
It is also common practice to start up for the first time in either the user's desktop resolution (because you know that works) or a lower and more standard resolution, such as 800x600 or 1024x768. These are very likely to be supported, and are more likely to be supported than 1366x768.
For the screenshot issue, how are you trying to take the screenshot? Alt+PrtScn or the Snipping Tool? What mode is the Snipping Tool in? Window, full-screen?
Looking at your ScreenAdaptor code,
screen_w = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
screen_h = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
scale_factor_w = 1366 / screen_w;
scale_factor_h = 768 / screen_h;
scaled_w = screen_w * scale_factor_w;
scaled_h = screen_h * scale_factor_h;
screen.PreferredBackBufferWidth = (int)scaled_w;
screen.PreferredBackBufferHeight = (int)scaled_h;
is a long way of saying
screen.PreferredBackBufferWidth = 1366;
screen.PreferredBackBufferHeight = 768;
because that is what it comes out to, no matter the user's display resolution.