I've always had issues with the viewport/screen width. The only way I've come up with that somewhat solves the issue for me is this:
Create a function in a an event sheet that you can add to other event sheets. Call it: "ResizeLayout"
In that function call a: System - set canvas size
Set the canvas size to:
Width: Browser.ExecJS("window.innerWidth")
Height:Browser.ExecJS("window.innerHeight")
In the same event sheet create an event: Browser - On resized
have it's event set to: function: Call "ResizeLayout"
In the System - start of layout
On all of my event sheets (the ones that have a layout) I also have it call that ResizeLayout function.
If you use a mouse click to select and cancel the full screen browser, run that function after you request or cancel the full screen.
I've used it with several full screen modes and it even works with the mode set to off.
Or at least it does for me.
Now, here's the downside to this. When your layout loads or when the screen gets resized your objects on the layout may not place correctly. I solve this by manually setting the position of every on-screen object after that function is called in the On start of layout.
Here's an example of placing an element at the screen center:
x = viewportleft(0)+(viewportwidth(0)/2)-(element.width/2)
y = viewporttop(0)+(viewportheight(0)/2)-(element.height/2)
That's assuming the element anchor is in the top left.
This may not be the 'proper' way and it may or may not work for your game. Most of my objects are static but... hope this at least gives you some ideas.