diff --git a/src/y_inter.c b/src/y_inter.c
index 32548d26369e7c7afe1509ef5b7213045c9dbaaa..340e8be4c18b0c2ec90227efd6e299d4b2aeae7f 100644
--- a/src/y_inter.c
+++ b/src/y_inter.c
@@ -603,8 +603,7 @@ void Y_IntermissionDrawer(void)
 					{
 						if (emeraldbounces < 3)
 						{
-							emeraldmomy += 1;
-							emeraldy += emeraldmomy;
+							emeraldy += (++emeraldmomy);
 							if (emeraldy > 74)
 							{
 								S_StartSound(NULL, sfx_tink); // tink
@@ -616,9 +615,11 @@ void Y_IntermissionDrawer(void)
 					}
 					else
 					{
-						emeraldmomy += 1;
-						emeraldy += emeraldmomy;
-						emeraldx += intertic - 6;
+						if (emeraldy < (vid.height/vid.dupy)+16)
+						{
+							emeraldy += (++emeraldmomy);
+							emeraldx += intertic - 6;
+						}
 						if (emeraldbounces < 1 && emeraldy > 74)
 						{
 							S_StartSound(NULL, sfx_shldls); // nope