Just wanted to say that Ali is right, Box2D has a macro on this - I'll paste it here:
/// The radius of the polygon/edge shape skin. This should not be modified. Making
/// this smaller means polygons will have an insufficient buffer for continuous collision.
/// Making it larger may create artifacts for vertex collision.
#define b2_polygonRadius (2.0f * b2_linearSlop)
This value is assigned to a new b2PolygonShape's m_radius field in the constructor. Subtracting this value from your body during creation is a trivial solution to resolve the gap glitch:
polygon.SetAsBox(width*0.5-polygon.m_radius, height*0.5-polygon.m_radius, b2Vec2(offsetX, offsetY), angle);
fixture.shape = &polygon;