diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/APIServlet.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/APIServlet.java
index c7a1297..589adab 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/APIServlet.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/APIServlet.java
@@ -3,8 +3,11 @@
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
+import java.io.File;
+import java.io.FileInputStream;
 import java.util.List;
 import java.util.logging.Level;
 
@@ -12,6 +15,7 @@
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.activation.MimetypesFileTypeMap;
 
 import edu.uci.ics.asterix.api.common.APIFramework.DisplayFormat;
 import edu.uci.ics.asterix.api.common.SessionConfig;
@@ -109,9 +113,9 @@
     @Override
     public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
         String resourcePath = null;
-        response.setCharacterEncoding("utf-8");
         PrintWriter out = response.getWriter();
         String requestURI = request.getRequestURI();
+
         if (requestURI.equals("/")) {
             response.setContentType("text/html");
             resourcePath = "/webui/querytemplate.html";
@@ -119,6 +123,33 @@
             resourcePath = requestURI;
         }
 
+        if (resourcePath.endsWith(".png")) {
+            System.out.println("loading " + resourcePath + " as png");
+            // Handle PNG content for webui
+            response.setContentType(new MimetypesFileTypeMap().getContentType(resourcePath));
+
+            // Read image file size
+            File pngFile = new File(resourcePath);
+            response.setContentLength((int)pngFile.length());
+
+            // Initialize filestreams, and write to output
+            FileInputStream pngIn = new FileInputStream(pngFile);
+            OutputStream pngOut = response.getOutputStream();
+
+            byte[] buf = new byte[1024];
+            int len;
+            while ((len = pngIn.read(buf)) >= 0) {
+                System.out.println(new String(buf, 0, len));
+                pngOut.write(buf, 0, len);
+            }
+
+            // Close streams
+            pngOut.close();
+            pngIn.close();
+            return;
+        }
+
+        response.setCharacterEncoding("utf-8");
         InputStream is = APIServlet.class.getResourceAsStream(resourcePath);
         if (is == null) {
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
diff --git a/asterix-app/src/main/resources/webui/querytemplate.html b/asterix-app/src/main/resources/webui/querytemplate.html
index a36599b..7b84213 100644
--- a/asterix-app/src/main/resources/webui/querytemplate.html
+++ b/asterix-app/src/main/resources/webui/querytemplate.html
@@ -52,8 +52,8 @@
         </a>
 
         <!-- Temporary logo placeholder -->
-        <!--<a class="brand" href="#"><img src="../sdk/static/img/finalasterixlogo.jpg"></a>-->
-        <a class="brand" href="#"><img src="http://db.tt/J1MTCdKs"></a>
+        <a class="brand" href="#"><img src="static/img/finalasterixlogo.png"></a>
+        <!--<a class="brand" href="#"><img src="http://db.tt/J1MTCdKs"></a>-->
         
         <div class="nav-collapse collapse">
           <ul class="nav">
