So just about every other standards-compliant browser out there that supports both box shadows and outlines renders both the way we'd expect them to. However, Firefox, presumably the most popular standards-compliant browser out there, at least up to version 3.6 (perhaps it'll be fixed in 3.7—hopefully), chooses to assume that the box shadow should be considered when rendering the outline. There are a couple of ways to fix this while maintaining cross-browser compatibility (insofar as standard-compliant browsers are concerned), at least theoretically speaking, but i'll start off with the best solution and work my way down the list.
The box-shadow solution
Yes, believe it or not, depending on the design (as these solutions are really only for those who don't want the outline to consider the box shadow), we can use box-shadow to our advantage here. We all know the box-shadow property allows for multiple shadows. All you would have to do, therefore, is (creatively) make use of the X and Y coordinates, just make sure the blur radius is always 0. Therefore a black outline would be like this:
box-shadow: 1px 1px 0 black, -1px 1px 0 black, 1px -1px 0 black, -1px -1px 0 black;
This solution works the best because of the fact that the box-shadow considers the radius of the element's border. Therefore there shouldn't be any problem in trying to achieve rounded outlines.
The outline-offset solution
Note that this solution will only work if the box shadow's coordinates is 0X, 0Y. This is do to the fact that the outline-offset property can only take one value, the length of the offset—that is, it considers only all edges, not individual edges (e.g. left, top, right, bottom). The solution consists of supplying a negative value to the length. The negative value should match the blur radius of the box shadow. For example, if the blur radius is 3 pixels, then the outline offset should be:
-moz-outline-offset: -3px; /* For older versions of Firefox */ outline-offset: -3px;
I hope the standard will soon allow for the outline-offset property to act more like the margin and padding properties. And i should mention that if you don't want other browsers affected by this (since other standards-compliant browsers do support outline-offset), then you can consider JavaScript to apply this for Firefox-only browsers.