colors = np.empty(X.shape, tuple)
for y in range(ylen):
for x in range(xlen):
colors[x, y] = (0, 0, 1, 1)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors,
Is the issue that you have transparent lines between the faces? Set the "shade" kwarg to True and the "antialiased" kwarg to False.
If the shading is not what you want, it has been a feature request to implement the smooth coloring that shading does, but without a lightsource. I have yet to do this, and there have been some attempts to get this right, but nothing finalized yet. Contributions would be welcomed!