To solve the problems of computing in decoding and cheating by a distributor or a participant of grayscale visual cryptography (VC), grayscale visual cryptography based on cheating prevention was proposed. We chose two grayscale images; one of the two images was a secret image and the other was a verification image. In the encoder, the input grayscale images were transformed into multitone images via multitoning first. Based on the unequal relationship between dots per inch (DPI) and pixels per inch (PPI), we got a group of sub-modes that contained the different numbers of print points. Two multitone images were transformed into two groups of bit-planes via sub-modes. For each secret bitplane, we operated (k, n) -VC encoding and got secret bit-plane shares; for each verification bit-plane, we operated (2, n+1) -VC encoding and got verification bit-plane shares. To prevent cheating, we randomly chose n verification bit-plane shares and connected them with n secret bit-plane shares to obtain n composite secret bit-plane shares. The remaining verification bit-plane share was connected with a blank image of the same size as the secret bit-plane share to obtain a composite verification share. In cheating prevention, a participant can judge the authenticity of the secret bit-plane shares held in his hand through the cheating prevention module. In the decoder, we operated OR operations on composite secret bit-plane shares of the same level and obtained reconstructed bit-planes. Only the reconstructed bit-planes were stacked to obtain the original secret image. Experiments prove the feasibility and advantages of this scheme.