diff --git a/lib/Doctrine/ORM/Persisters/ManyToManyPersister.php b/lib/Doctrine/ORM/Persisters/ManyToManyPersister.php
index 33dab21d1..54dc2141d 100644
--- a/lib/Doctrine/ORM/Persisters/ManyToManyPersister.php
+++ b/lib/Doctrine/ORM/Persisters/ManyToManyPersister.php
@@ -254,7 +254,9 @@ class ManyToManyPersister extends AbstractCollectionPersister
         $uow = $this->_em->getUnitOfWork();
 
         // shortcut for new entities
-        if ($uow->getEntityState($element, UnitOfWork::STATE_NEW) == UnitOfWork::STATE_NEW) {
+        $entityState = $uow->getEntityState($element, UnitOfWork::STATE_NEW);
+        if ($entityState === UnitOfWork::STATE_NEW || 
+            ($entityState === UnitOfWork::STATE_MANAGED && $uow->isScheduledForInsert($element))) {
             return false;
         }
 
@@ -275,7 +277,7 @@ class ManyToManyPersister extends AbstractCollectionPersister
         $uow = $this->_em->getUnitOfWork();
 
         // shortcut for new entities
-        if ($uow->getEntityState($element, UnitOfWork::STATE_NEW) == UnitOfWork::STATE_NEW) {
+        if ($uow->getEntityState($element, UnitOfWork::STATE_NEW) === UnitOfWork::STATE_NEW) {
             return false;
         }
 
diff --git a/tests/Doctrine/Tests/ORM/Functional/ManyToManyExtraLazyContainsTest.php b/tests/Doctrine/Tests/ORM/Functional/ManyToManyExtraLazyContainsTest.php
new file mode 100644
index 000000000..bbb26fcea
--- /dev/null
+++ b/tests/Doctrine/Tests/ORM/Functional/ManyToManyExtraLazyContainsTest.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace Doctrine\Tests\ORM\Functional;
+
+use Doctrine\Common\Collections\ArrayCollection;
+require_once __DIR__ . '/../../TestInit.php';
+
+/**
+ * 
+ */
+class ManyToManyExtraLazyContainsTest extends \Doctrine\Tests\OrmFunctionalTestCase
+{
+    public function setUp()
+    {
+        $this->useModelSet('company');
+        parent::setUp();
+    }
+
+    public function testManyToManyExtraLazyContainsAddedPendingInsertEntityIsTrue()
+    {
+        $contract = new \Doctrine\Tests\Models\Company\CompanyFlexContract();
+
+        $this->_em->persist($contract);
+        $this->_em->flush();
+        
+        $this->_em->clear();
+        $contract = $this->_em->find('Doctrine\Tests\Models\Company\CompanyFlexContract', $contract->getId());
+        
+        $pendingInsertManager = new \Doctrine\Tests\Models\Company\CompanyManager();
+        $this->_em->persist($pendingInsertManager);
+        $contract->getManagers()->add($pendingInsertManager);
+        
+        $result = $contract->getManagers()->contains($pendingInsertManager);
+
+        $this->assertTrue($result);
+    }
+
+    public function testManyToManyExtraLazyContainsNonAddedPendingInsertEntityIsFalse()
+    {
+        $contract = new \Doctrine\Tests\Models\Company\CompanyFlexContract();
+
+        $this->_em->persist($contract);
+        $this->_em->flush();
+        
+        $this->_em->clear();
+        $contract = $this->_em->find('Doctrine\Tests\Models\Company\CompanyFlexContract', $contract->getId());
+        
+        $pendingInsertManager = new \Doctrine\Tests\Models\Company\CompanyManager();
+        $this->_em->persist($pendingInsertManager);
+        
+        $result = $contract->getManagers()->contains($pendingInsertManager);
+
+        $this->assertFalse($result);
+    }
+}
\ No newline at end of file