In most cases, a texture is first filtered by most renderers (also viewport renderers) before it is mapped to the polygon surface. This is to achieve that the individual texture pixels (texels) are detected less quickly.
This texture filter mixes the color values of the surrounding texture pixels.
What you probably see is a mixed color between the textured background (in your case, gray) and the actual color. This is called "color bleeding".
You have to draw a border around the UV shells (edge padding), with the same color values.
Replies
Edit:
I do not know 3D coat, but maybe there is an "edge padding" option ...
Cheers, starcow