Repository: electron
Issue: outerHeight shrinks every time you call setBounds with the current bounds for non-resizable windows (DPI related?)
Labels: platform/windows,bug :beetle:,component/BrowserWindow,10-x-y,11-x-y

### Preflight Checklist
* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:** 10, 11
* **Operating System:** Windows 10
* **Last Known Working Electron version:** not sure

### Expected Behavior
I expect that `window.outerHeight` doesn't change when you call `window.setBounds(window.getBounds())`

### Actual Behavior
The height decreases each time

### To Reproduce
Thought it was related to [this issue](https://github.com/electron/electron/issues/15560), but I don't think anymore.

This seems to only happen when the window is moved to another monitor with different DPI settings.

1. npm start below app
2. click Open Window
3. move the window to another monitor with different DPI
4. press the Set Bounds button
5. see that the height keeps decreasing every time you press it
6. (don't have this issue for resizable windows)

main.js:
```
const {app, BrowserWindow, ipcMain} = require('electron')

function createWindow () {
  const mainWindow = new BrowserWindow({
    webPreferences: {
      nativeWindowOpen: true,
      nodeIntegration: true
    }
  })

  mainWindow.loadFile('index.html')
  
  mainWindow.webContents.on("new-window", (e, url, frame, disp, opts) => {
    opts.resizable = false;
  });

  let winId;
  app.on("browser-window-created", (e, win) => {
    winId = win.id;
  });

  ipcMain.on("setBounds", (e, bounds) => {
    const win = BrowserWindow.fromId(winId);
    if (win) {
      console.log(bounds); // kind of redundant, but this also confirms that the bounds (outerHeight specifically) shrinks each time. you can just as well pass the `bounds` in instead of `win.getBounds()`
      win.setBounds(win.getBounds());
    }
  });
}

app.whenReady().then(() => {
  createWindow()
})

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})
```

index.html:
```
<!DOCTYPE html>
<html>
  <body>
    <button id="b">Open Window</button>
    <button id="s">Set Bounds to current size</button>

    <script src="./renderer.js"></script>
  </body>
</html>
```

renderer.js:
```
const {ipcRenderer} = require("electron");

let w;
document.getElementById("b").onclick = () => {
	w = window.open("index2.html");
};

document.getElementById("s").onclick = () => {
	ipcRenderer.send("setBounds", {
		height: w.outerHeight,
		width: w.outerWidth
	});
};
```

index2.html:
```
<!DOCTYPE html>
<html>
  <body>
    <h5>Test</h5>
  </body>
</html>
```

gif:
![heightdecreasing](https://user-images.githubusercontent.com/6374473/102514206-d2513c80-4051-11eb-91ce-2e0a6da9e8e0.gif)