<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <script type="text/javascript">
      function scrollAndRepaint()
      {
          scrollBy(0, 200);
          if (window.testRunner) {
              document.body.offsetTop;
              testRunner.displayAndTrackRepaints();
              repaintTest();
           } else {
              setTimeout(repaintTest, 15);
           }
      }
      function repaintTest()
      {
          document.getElementById('toMove').style.left = "150px";
          document.getElementById('toMove').style.backgroundColor = "green";
      }
  </script>
</head>
  <body onload="scrollAndRepaint()" style="height: 3000px;">
    <div style="position: absolute: top: 0; left: 0; -webkit-transform: translate(0, 0);">
      <p style="position: absolute; top: 210px">You should see a yellow rect on the left, and a green one on the right. No red pixels.</p>
      <div id="toMove" style="width: 100px; height: 100px; background-color: red; position: fixed; top: 270px; left: 10px;"></div>
      <div style="width: 100px; height: 100px; background-color: yellow; position: absolute; top: 270px; left: 10px; z-index: -5;"></div>
    </div>
  </body>
</html>
