diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index 97230d422bc..d7750c91ef3 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -210,8 +210,6 @@
 #include "scene/resources/physics_material.h"
 #endif
 
-static ResourceFormatLoaderTheme *resource_loader_theme = NULL;
-
 static ResourceFormatSaverText *resource_saver_text = NULL;
 static ResourceFormatLoaderText *resource_loader_text = NULL;
 
@@ -242,9 +240,6 @@ void register_scene_types() {
 	resource_loader_texture_layered = memnew(ResourceFormatLoaderTextureLayered);
 	ResourceLoader::add_resource_format_loader(resource_loader_texture_layered);
 
-	resource_loader_theme = memnew(ResourceFormatLoaderTheme);
-	ResourceLoader::add_resource_format_loader(resource_loader_theme);
-
 	resource_saver_text = memnew(ResourceFormatSaverText);
 	ResourceSaver::add_resource_format_saver(resource_saver_text, true);
 
@@ -743,7 +738,6 @@ void unregister_scene_types() {
 	memdelete(resource_loader_dynamic_font);
 	memdelete(resource_loader_stream_texture);
 	memdelete(resource_loader_texture_layered);
-	memdelete(resource_loader_theme);
 
 	DynamicFont::finish_dynamic_fonts();
 
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 8c01a642ae9..3eb652ecd9a 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -761,411 +761,3 @@ Theme::Theme() {
 
 Theme::~Theme() {
 }
-
-RES ResourceFormatLoaderTheme::load(const String &p_path, const String &p_original_path, Error *r_error) {
-	if (r_error)
-		*r_error = ERR_CANT_OPEN;
-
-	Error err;
-	FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
-
-	ERR_EXPLAIN("Unable to open theme file: " + p_path);
-	ERR_FAIL_COND_V(err, RES());
-	String base_path = p_path.get_base_dir();
-	Ref<Theme> theme(memnew(Theme));
-	Map<StringName, Variant> library;
-	if (r_error)
-		*r_error = ERR_FILE_CORRUPT;
-
-	bool reading_library = false;
-	int line = 0;
-
-	while (!f->eof_reached()) {
-
-		String l = f->get_line().strip_edges();
-		line++;
-
-		int comment = l.find(";");
-		if (comment != -1)
-			l = l.substr(0, comment);
-		if (l == "")
-			continue;
-
-		if (l.begins_with("[")) {
-			if (l == "[library]") {
-				reading_library = true;
-			} else if (l == "[theme]") {
-				reading_library = false;
-			} else {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Unknown section type: '" + l + "'.");
-				ERR_FAIL_V(RES());
-			}
-			continue;
-		}
-
-		int eqpos = l.find("=");
-		if (eqpos == -1) {
-			memdelete(f);
-			ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected '='.");
-			ERR_FAIL_V(RES());
-		}
-
-		String right = l.substr(eqpos + 1, l.length()).strip_edges();
-		if (right == "") {
-			memdelete(f);
-			ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected value after '='.");
-			ERR_FAIL_V(RES());
-		}
-
-		Variant value;
-
-		if (right.is_valid_integer()) {
-			//is number
-			value = right.to_int();
-		} else if (right.is_valid_html_color()) {
-			//is html color
-			value = Color::html(right);
-		} else if (right.begins_with("@")) { //reference
-
-			String reference = right.substr(1, right.length());
-			if (!library.has(reference)) {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid reference to '" + reference + "'.");
-				ERR_FAIL_V(RES());
-			}
-
-			value = library[reference];
-
-		} else if (right.begins_with("default")) { //use default
-			//do none
-		} else {
-			//attempt to parse a constructor
-			int popenpos = right.find("(");
-
-			if (popenpos == -1) {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid constructor syntax: " + right);
-				ERR_FAIL_V(RES());
-			}
-
-			int pclosepos = right.find_last(")");
-
-			if (pclosepos == -1) {
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid constructor parameter syntax: " + right);
-				ERR_FAIL_V(RES());
-			}
-
-			String type = right.substr(0, popenpos);
-			String param = right.substr(popenpos + 1, pclosepos - popenpos - 1);
-
-			if (type == "icon") {
-
-				String path;
-
-				if (param.is_abs_path())
-					path = param;
-				else
-					path = base_path + "/" + param;
-
-				Ref<Texture> texture = ResourceLoader::load(path);
-				if (!texture.is_valid()) {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Couldn't find icon at path: " + path);
-					ERR_FAIL_V(RES());
-				}
-
-				value = texture;
-
-			} else if (type == "sbox") {
-
-				String path;
-
-				if (param.is_abs_path())
-					path = param;
-				else
-					path = base_path + "/" + param;
-
-				Ref<StyleBox> stylebox = ResourceLoader::load(path);
-				if (!stylebox.is_valid()) {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Couldn't find stylebox at path: " + path);
-					ERR_FAIL_V(RES());
-				}
-
-				value = stylebox;
-
-			} else if (type == "sboxt") {
-
-				Vector<String> params = param.split(",");
-				if (params.size() != 5 && params.size() != 9) {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid param count for sboxt(): '" + right + "'.");
-					ERR_FAIL_V(RES());
-				}
-
-				String path = params[0];
-
-				if (!param.is_abs_path())
-					path = base_path + "/" + path;
-
-				Ref<Texture> tex = ResourceLoader::load(path);
-				if (tex.is_null()) {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Could not open texture for sboxt at path: '" + params[0] + "'.");
-					ERR_FAIL_V(RES());
-				}
-
-				Ref<StyleBoxTexture> sbtex(memnew(StyleBoxTexture));
-
-				sbtex->set_texture(tex);
-
-				for (int i = 0; i < 4; i++) {
-					if (!params[i + 1].is_valid_integer()) {
-
-						memdelete(f);
-						ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid expand margin parameter for sboxt #" + itos(i + 1) + ", expected integer constant, got: '" + params[i + 1] + "'.");
-						ERR_FAIL_V(RES());
-					}
-
-					int margin = params[i + 1].to_int();
-					sbtex->set_expand_margin_size(Margin(i), margin);
-				}
-
-				if (params.size() == 9) {
-
-					for (int i = 0; i < 4; i++) {
-
-						if (!params[i + 5].is_valid_integer()) {
-							memdelete(f);
-							ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid expand margin parameter for sboxt #" + itos(i + 5) + ", expected integer constant, got: '" + params[i + 5] + "'.");
-							ERR_FAIL_V(RES());
-						}
-
-						int margin = params[i + 5].to_int();
-						sbtex->set_margin_size(Margin(i), margin);
-					}
-				}
-
-				value = sbtex;
-			} else if (type == "sboxf") {
-
-				Vector<String> params = param.split(",");
-				if (params.size() < 2) {
-
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid param count for sboxf(): '" + right + "'.");
-					ERR_FAIL_V(RES());
-				}
-
-				Ref<StyleBoxFlat> sbflat(memnew(StyleBoxFlat));
-
-				if (!params[0].is_valid_integer()) {
-
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected integer numeric constant for parameter 0 (border size).");
-					ERR_FAIL_V(RES());
-				}
-
-				sbflat->set_border_width_all(params[0].to_int());
-
-				if (!params[0].is_valid_integer()) {
-
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected integer numeric constant for parameter 0 (border size).");
-					ERR_FAIL_V(RES());
-				}
-
-				int left = MIN(params.size() - 1, 3);
-
-				int ccodes = 0;
-
-				for (int i = 0; i < left; i++) {
-
-					if (params[i + 1].is_valid_html_color())
-						ccodes++;
-					else
-						break;
-				}
-
-				Color normal;
-				Color bright;
-				Color dark;
-
-				if (ccodes < 1) {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected at least 1, 2 or 3 html color codes.");
-					ERR_FAIL_V(RES());
-				} else if (ccodes == 1) {
-
-					normal = Color::html(params[1]);
-					bright = Color::html(params[1]);
-					dark = Color::html(params[1]);
-				} else if (ccodes == 2) {
-
-					normal = Color::html(params[1]);
-					bright = Color::html(params[2]);
-					dark = Color::html(params[2]);
-				} else {
-
-					normal = Color::html(params[1]);
-					bright = Color::html(params[2]);
-					dark = Color::html(params[3]);
-				}
-
-				sbflat->set_border_color_all(bright);
-				//				sbflat->set_dark_color(dark);
-				sbflat->set_bg_color(normal);
-
-				if (params.size() == ccodes + 5) {
-					//margins
-					for (int i = 0; i < 4; i++) {
-
-						if (!params[i + ccodes + 1].is_valid_integer()) {
-							memdelete(f);
-							ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid expand margin parameter for sboxf #" + itos(i + ccodes + 1) + ", expected integer constant, got: '" + params[i + ccodes + 1] + "'.");
-							ERR_FAIL_V(RES());
-						}
-
-						//int margin = params[i+ccodes+1].to_int();
-						//sbflat->set_margin_size(Margin(i),margin);
-					}
-				} else if (params.size() != ccodes + 1) {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid amount of margin parameters for sboxt.");
-					ERR_FAIL_V(RES());
-				}
-
-				value = sbflat;
-
-			} else {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid constructor type: '" + type + "'.");
-				ERR_FAIL_V(RES());
-			}
-		}
-
-		//parse left and do something with it
-		String left = l.substr(0, eqpos);
-
-		if (reading_library) {
-
-			left = left.strip_edges();
-			if (!left.is_valid_identifier()) {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": <LibraryItem> is not a valid identifier.");
-				ERR_FAIL_V(RES());
-			}
-			if (library.has(left)) {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Already in library: '" + left + "'.");
-				ERR_FAIL_V(RES());
-			}
-
-			library[left] = value;
-		} else {
-
-			int pointpos = left.find(".");
-			if (pointpos == -1) {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Expected 'control.item=..' assign syntax.");
-				ERR_FAIL_V(RES());
-			}
-
-			String control = left.substr(0, pointpos).strip_edges();
-			if (!control.is_valid_identifier()) {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": <Control> is not a valid identifier.");
-				ERR_FAIL_V(RES());
-			}
-			String item = left.substr(pointpos + 1, left.size()).strip_edges();
-			if (!item.is_valid_identifier()) {
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": <Item> is not a valid identifier.");
-				ERR_FAIL_V(RES());
-			}
-
-			if (value.get_type() == Variant::NIL) {
-				//try to use exiting
-				if (Theme::get_default()->has_stylebox(item, control))
-					value = Theme::get_default()->get_stylebox(item, control);
-				else if (Theme::get_default()->has_font(item, control))
-					value = Theme::get_default()->get_font(item, control);
-				else if (Theme::get_default()->has_icon(item, control))
-					value = Theme::get_default()->get_icon(item, control);
-				else if (Theme::get_default()->has_color(item, control))
-					value = Theme::get_default()->get_color(item, control);
-				else if (Theme::get_default()->has_constant(item, control))
-					value = Theme::get_default()->get_constant(item, control);
-				else {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Default not present for: '" + control + "." + item + "'.");
-					ERR_FAIL_V(RES());
-				}
-			}
-
-			if (value.get_type() == Variant::OBJECT) {
-
-				Ref<Resource> res = value;
-				if (!res.is_valid()) {
-
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid resource (NULL).");
-					ERR_FAIL_V(RES());
-				}
-
-				if (Object::cast_to<StyleBox>(*res)) {
-					theme->set_stylebox(item, control, res);
-				} else if (Object::cast_to<Font>(*res)) {
-					theme->set_font(item, control, res);
-				} else if (Object::cast_to<Font>(*res)) {
-					theme->set_font(item, control, res);
-				} else if (Object::cast_to<Texture>(*res)) {
-					theme->set_icon(item, control, res);
-				} else {
-					memdelete(f);
-					ERR_EXPLAIN(p_path + ":" + itos(line) + ": Invalid resource type.");
-					ERR_FAIL_V(RES());
-				}
-			} else if (value.get_type() == Variant::COLOR) {
-
-				theme->set_color(item, control, value);
-
-			} else if (value.get_type() == Variant::INT) {
-
-				theme->set_constant(item, control, value);
-
-			} else {
-
-				memdelete(f);
-				ERR_EXPLAIN(p_path + ":" + itos(line) + ": Couldn't even determine what this setting is! what did you do!?");
-				ERR_FAIL_V(RES());
-			}
-		}
-	}
-
-	f->close();
-	memdelete(f);
-
-	if (r_error)
-		*r_error = OK;
-
-	return theme;
-}
-
-void ResourceFormatLoaderTheme::get_recognized_extensions(List<String> *p_extensions) const {
-
-	p_extensions->push_back("theme");
-}
-
-bool ResourceFormatLoaderTheme::handles_type(const String &p_type) const {
-
-	return p_type == "Theme";
-}
-
-String ResourceFormatLoaderTheme::get_resource_type(const String &p_path) const {
-
-	if (p_path.get_extension().to_lower() == "theme")
-		return "Theme";
-	return "";
-}
diff --git a/scene/resources/theme.h b/scene/resources/theme.h
index c9da5f6ead6..ba47c5fb3ce 100644
--- a/scene/resources/theme.h
+++ b/scene/resources/theme.h
@@ -190,12 +190,4 @@ public:
 	~Theme();
 };
 
-class ResourceFormatLoaderTheme : public ResourceFormatLoader {
-public:
-	virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
-	virtual void get_recognized_extensions(List<String> *p_extensions) const;
-	virtual bool handles_type(const String &p_type) const;
-	virtual String get_resource_type(const String &p_path) const;
-};
-
 #endif