That's natural as top level windows have an obligatory background while child widgets don't. Therefore rendering a non-window widget that is itself transparent will only make its children visible (note that the widget itself gets rendered, it just doesn't paint any pixels - if you change the value of one specific property of the widget (find out which yourself), you'll get a background instead of transparency).