An image forming engine has color shifting amount storage units C, M, Y, and K (black) which store actual shifting amounts relative to ideal scan directions on image carriers C, M, Y, and K in image forming units C, M, Y, and K. Color shifting correction amount arithmetic units calculate color shifting correction amounts for respective color components to base on the stored color shifting amounts. Color shifting correction units C, M, Y, and K perform color shifting correction by converting coordinates upon reading out image data from bitmap memories C, M, Y, and K on the basis of the calculated color shifting correction amounts, and then perform tone correction. Data after tone correction undergo halftone processing by halftone processors. C, M, Y, and K to suppress moire. PWM processors C, M, Y, and K generate PWM signals for scanning, and output them to exposure units C, M, Y, and K of the respective image forming units.