Visibility hidden ancestor with visible child



Only visible text is antialiased

This text is antialiased. There is a hidden smoothed child


(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 800.00 600.00)
  (children 1
    (GraphicsLayer
      (bounds 800.00 600.00)
      (contentsOpaque 1)
      (children 4
        (GraphicsLayer
          (offsetFromRenderer width=-6 height=-6)
          (position 12.00 17.00)
          (bounds 162.00 162.00)
          (drawsContent 1)
        )
        (GraphicsLayer
          (offsetFromRenderer width=-6 height=-6)
          (position 182.00 17.00)
          (bounds 162.00 162.00)
          (drawsContent 1)
        )
        (GraphicsLayer
          (offsetFromRenderer width=-6 height=-6)
          (position 352.00 17.00)
          (bounds 162.00 162.00)
          (drawsContent 1)
        )
        (GraphicsLayer
          (offsetFromRenderer width=-6 height=-6)
          (position 522.00 17.00)
          (bounds 162.00 162.00)
          (drawsContent 1)
        )
      )
    )
  )
)

