vPosition.x = (vPosition.x*cos)-(vPosition.z*sin)+p1x;
vPosition.z = (vPosition.z*cos)+(vPosition.x*sin)+p1y;
You are using the updated x-coordinate in the second line, but you should use the original x-coordinate (after scaling). I think that the code should look like:
void main(void)
{
vUv = uv;
// Scale
float scaledX = position.x * width;
float scaledY = position.y * height;
float scaledZ = position.z * depth;
// Rotation + Position
vPosition.y = scaledY + p1z;
vPosition.x = scaledX * cos - scaledZ * sin + p1x;
vPosition.z = scaledZ * cos + scaledX * sin + p1y;
gl_Position = projectionMatrix * modelViewMatrix * vec4(vPosition, 1);
}