<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <title>Test invalidation of very small objects that have been scaled up</title>
  <!--
    From https://bugzilla.mozilla.org/show_bug.cgi?id=465996

    The very small graphic that has been scaled up to be visible should
    invalidate correctly when moved.
  -->
  <script type="text/javascript">//<![CDATA[

function move_small_object()
{
  document.getElementById('path').setAttribute("transform", "translate(-.2, -.2)");
  document.documentElement.removeAttribute('class');
  if (window.testRunner)
    testRunner.notifyDone();
}

if (window.testRunner)
  testRunner.waitUntilDone();

setTimeout(move_small_object, 100);

  //]]></script>
  <rect width="100%" height="100%" fill="lime"/>
  <g transform="scale(300, 300)">
    <path id="path" transform="translate(.2, .2)" fill="red" stroke="black" stroke-width="0.005"
          d="M 0.05 0 C 0.05 0.06666666 -0.05 0.06666666 -0.05 0 C -0.05 -0.0666666666 0.05 -0.06666666 0.05 0"/>
  </g>
</svg>
