<html>
<head>
    <style>
        ::-webkit-scrollbar {
            width: 0px;
            height: 0px;
        }
    </style>
    <script>
      window.enablePixelTesting = true;

      function scroll() {
          // Fully scroll to bring the fixed pos rect into view.
          window.scrollTo(500, 1700);
      }

      function scaleWithEventSender() {
          var scaleFactor = 2.0;
          if (window.internals) {
             internals.setPageScaleFactor(scaleFactor);
          }
      }

      function test() {
          if (window.internals)
            internals.settings.setScrollAnimatorEnabled(false);

          document.body.style.width = (document.body.clientWidth + 100) + "px";
          scaleWithEventSender();
          scroll();
      }
    </script>
    <script src="../../resources/js-test.js"></script>
</head>
<body style="height: 2000px; width: 2000px; margin:0px;" onload="test();">
    <div style="position: fixed; bottom: 100px; right: 100px; z-index: 1">
        <div style="left:0; top:0; width:100px; height:100px; position:absolute; background:black;"></div>
        <div style="left:100px; top:0; width:100px; height:100px; position:absolute; background:green;"></div>

        <div style="left:0px; top:100px; width:100px; height:100px; position:absolute; background:yellow;"></div>
        <div style="left:100px; top:100px; width:100px; height:100px; position:absolute; background:blue;"></div>
    </div>
</body>
</html>
