Strange behavior of VoronoiMesh

In this very simple example the helpful function VoronoiMeshworks as expected. Every point pts is shown with a polygonal surrounding area.

pts = RandomReal[{-1, 1}, { 5, 2}];
mesh = VoronoiMesh[pts];
Show[mesh, Graphics[{Red, Point[pts]}]]


But if I try to plot the single elements to my surprise I get a list of plots which show some of the "inner" points lying outside the polygons!

pmesh = MeshCoordinates[mesh];
index = MeshCells[mesh, 2][[All, 1]];
elem = Map[Polygon[pmesh[[#]]] &, index]; (* polygons*)

GraphicsRow@MapThread[Graphics[{col = RandomColor[], Point[#1], FaceForm[None],EdgeForm[col], #2}] &, {pts, elem}]


How can that be? Thanks!

Since Version 12.1, we can use NearestMeshCells to find the indexes of the polygon to which the points belong.

Clear[pts,mesh,indexs];
pts = RandomReal[{-1, 1}, {5, 2}];
mesh = VoronoiMesh[pts, Epilog -> {Red, Point[pts]}]
indexes = Flatten[NearestMeshCells[{mesh, 2}, #] & /@ pts, 1]


{{2, 2}, {2, 3}, {2, 1}, {2, 5}, {2, 4}}.

GraphicsRow@