Trouble with Wire I2C when connecting two Arduinos

I have connected an Arduino Mega 2560 and an Arduino Nano through I2C. The Mega, which is the main controller on my robot, will be controlling (sending data to) the Nano, which will handle some of the complex lighting on the robot. As per the documentation for the respective boards, I have the Mega pin 20 (SDA) connected to the Nano Analog Pin 4 (SDA) and the Mega pin 21 (SCL) connected to the Nano Analog Pin 5 (SCL). I am using some of the example master/slave sketch that comes with the Arduino IDE.

The Mega-based robot runs perfectly unless I try to send an I2C message. If I send a message through I2C, my motor controllers (which are on Serial 1 and Serial 2 of the mega and should be unrelated to I2C which is on different pins) go crazy and start running on their own. So, it appears that I2C is interfering with Serial 1 and/or 2 on the Mega.

Here's a simplified version of my I2C code on the Mega:

#include <Wire.h>

void setup()
  Serial1.begin(9600);   Motor Controller #1
  Serial2.begin(9600);  Motor Controller #2


void loop():
 // lots of unrelated code up here

  Wire.beginTransmission(4);   // transmit data to device #4 (which is the Nano)
  Wire.send('g');   // send the "g" command, which will tell the Nano code what to do
  Wire.endTransmission();  // stop transmitting

  //  lots of motor controller code is down here, such as Serial1.print(rear_left_motor_signal,BYTE);


If the Wire lines are commented out, then the motor controllers behave properly.
Even though they are unrelated, if the Wire lines are there, then the motor controllers behave erratically.
It's as if the pins or the Wire library are somehow using the same timing or interrupt or otherwise interfering with Serial 1 and Serial 2.

If anyone could help me, I would appreciate it.

Add decoupling on the motor supply:-