I think boundingBox will only work if the MFnMesh is attached to a dagNode, rather than mesh data coming through the DG; you have to have used the MFnMesh(const MDagPath &) constructor. I would've said use MFnMesh::getPoints and manually compute it. It must be a recent addition, but I just noticed there's also MFnMesh::getRawPoints which provides access to the internal vertex array to avoid the copy. That only supplies floats, so hopefully they mean a rendering representation and they're not converting all doubles down to floats in MFnMesh::setPoints.