 +
 +
 +            NovaDraw.Vertex[] shade = new NovaDraw.Vertex[] {
++                    new NovaDraw.Vertex(this.left,  this.top,      0,   0,    new Color(0, 0, 0, 255)),
 +                    new NovaDraw.Vertex(this.left, this.top +4,   0,1,     new Color(0, 0, 0, 0)),
-+                    new NovaDraw.Vertex(this.right, this.top+4,   1,1,    new Color(0, 0, 0, 0)),
-+                    new NovaDraw.Vertex(this.right, this.top,      1,0,       new Color(0, 0, 0, 255)),
-+                    new NovaDraw.Vertex(this.left, this.top,      0,   0,    new Color(0, 0, 0, 255))
++                    new NovaDraw.Vertex(this.right,this.top+4,   1,1,    new Color(0, 0, 0, 0)),
++                    new NovaDraw.Vertex(this.right, this.top,      1,0,       new Color(0, 0, 0, 255))
 +            };
 +
 +            indices = new Integer[] {
-+                    0, 1, 2, 2, 3, 0
++                    0, 1, 2, 0, 3, 2
 +            };
 +
 +            NovaDraw.draw(WHITE_TEXTURE_GUI_LOCATION, indices, shade);
 +
-+
 +            shade = new NovaDraw.Vertex[] {
-+                    new NovaDraw.Vertex(this.left, this.bottom,   0,1,     new Color(0, 0, 0, 255)),
-+                    new NovaDraw.Vertex(this.right, this.bottom,   1,1,    new Color(0, 0, 0, 255)),
-+                    new NovaDraw.Vertex(this.right, this.bottom-4,     1,0,       new Color(0, 0, 0, 0)),
-+                    new NovaDraw.Vertex(this.left, this.bottom-4,      0,0,        new Color(0, 0, 0, 0))
++                    new NovaDraw.Vertex(this.left, this.bottom-4,      0,0,        new Color(0, 0, 0, 0)),
++                    new NovaDraw.Vertex(this.left,  this.bottom,   0,1,     new Color(0, 0, 0, 255)),
++                    new NovaDraw.Vertex(this.right, this.bottom,   1,1,     new Color(0, 0, 0, 255)),
++                    new NovaDraw.Vertex(this.right,this.bottom-4,     1,0,       new Color(0, 0, 0, 0))
 +            };
 +
 +            indices = new Integer[] {
-+                    0, 1, 2, 2, 3, 0
++                    0, 1, 2, 0, 2, 3
 +            };
 +
 +            NovaDraw.draw(WHITE_TEXTURE_GUI_LOCATION, indices, shade);

@@ -9 +12 @@ import net.minecraft.util.math.MathHelper;
-import org.lwjgl.input.Mouse;
+import com.continuum.nova.input.Mouse;
@@ -11,2 +14,5 @@ import org.lwjgl.input.Mouse;
-public abstract class GuiSlot
-{
+import java.awt.*;
+
+import static com.continuum.nova.NovaConstants.WHITE_TEXTURE_GUI_LOCATION;
+
+public abstract class GuiSlot {
@@ -62,0 +69 @@ public abstract class GuiSlot
+    protected boolean stateChanged;
@@ -126,5 +133 @@ public abstract class GuiSlot
-    protected abstract void drawBackground();
-
-    protected void updateItemPos(int entryID, int insideLeft, int yPos)
-    {
-    }
+    protected void updateItemPos(int entryID, int insideLeft, int yPos) {}
@@ -137,3 +140 @@ public abstract class GuiSlot
-    protected void drawListHeader(int insideLeft, int insideTop, Tessellator tessellatorIn)
-    {
-    }
+    protected void drawListHeader(int insideLeft, int insideTop) {}
@@ -141,3 +142 @@ public abstract class GuiSlot
-    protected void clickedHeader(int p_148132_1_, int p_148132_2_)
-    {
-    }
+    protected void clickedHeader(int p_148132_1_, int p_148132_2_) {}
@@ -145,3 +144 @@ public abstract class GuiSlot
-    protected void renderDecorations(int mouseXIn, int mouseYIn)
-    {
-    }
+    protected void renderDecorations(int mouseXIn, int mouseYIn) {}
@@ -149 +146 @@ public abstract class GuiSlot
-    public int getSlotIndexFromScreenCoords(int posX, int posY)
+    protected int getSlotIndexFromScreenCoords(int posX, int posY)
@@ -170,2 +167 @@ public abstract class GuiSlot
-    protected void bindAmountScrolled()
-    {
+    protected void bindAmountScrolled() {
@@ -188,3 +184,2 @@ public abstract class GuiSlot
-    public boolean isMouseYWithinSlotBounds(int p_148141_1_)
-    {
-        return p_148141_1_ >= this.top && p_148141_1_ <= this.bottom && this.mouseX >= this.left && this.mouseX <= this.right;
+    public boolean isMouseYWithinSlotBounds(int mouseYIn) {
+        return mouseYIn >= this.top && mouseYIn <= this.bottom && this.mouseX >= this.left && this.mouseX <= this.right;
@@ -203,6 +198,3 @@ public abstract class GuiSlot
-    public void actionPerformed(GuiButton button)
-    {
-        if (button.enabled)

+            NovaDraw.incrementZ();
+            if (this.hasListHeader) {
+                drawListHeader(k, l);
@@ -251,0 +244,3 @@ public abstract class GuiSlot
+            NovaDraw.incrementZ();
+
+            drawSelectionBox(k, l, mouseXIn, mouseYIn);
@@ -253 +247,0 @@ public abstract class GuiSlot
-            this.drawSelectionBox(k, l, mouseXIn, mouseYIn);
@@ -254,0 +249,2 @@ public abstract class GuiSlot
+            NovaDraw.incrementZ();
+
@@ -262,13 +258,28 @@ public abstract class GuiSlot
-            int i1 = 4;
-            vertexbuffer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
-            vertexbuffer.pos((double)this.left, (double)(this.top + 4), 0.0D).tex(0.0D, 1.0D).color(0, 0, 0, 0).endVertex();
