The easiest fix is to override the entire behavior with an attribute selector. No document changes needed:
[hidden]{
display:none;
}
http://jsfiddle.net/mjxcrrve/
I am guessing the logic behind the default behavior is to allow overriding the “hidden” html attribute with CSS. “hidden” is more or less an implicit “display: none”, so overriding the “display” style is a a natural candidate. But I agree it seems ill-thought-out that modifying pure layout should affect visibility.