public boolean loadFromJsonStream(InputStream is) {
		BufferedReader br;
		try {
			br = new BufferedReader(new InputStreamReader(is));
			StringBuffer buf = new StringBuffer();
			String line = null;
			while ((line = br.readLine()) != null) {
				buf.append(line);
			}
			
			JSONObject obj = new JSONObject(buf.toString());
			if (obj.has(FRACT_PRESETS)) {
				JSONArray fractPresetsArray = obj.getJSONArray(FRACT_PRESETS);
				this.fractPresets.clear();
				for (int i = 0; i < fractPresetsArray.length(); i++) {
					JSONObject fractObj = fractPresetsArray.getJSONObject(i);
					this.fractPresets.add(FractParam.fromJSONObject(fractObj));
				}
			}
			if (obj.has(COLOR_PRESETS)) {
				JSONArray colPresetsArray = obj.getJSONArray(COLOR_PRESETS);
				this.colorPresets.clear();
				for (int i = 0; i < colPresetsArray.length(); i++) {
					JSONObject colObj = colPresetsArray.getJSONObject(i);
					this.colorPresets.add(ColorPreset.fromJSONObject(colObj));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		} catch (JSONException e) {
			e.printStackTrace();
			return false;
		}
		if (emitInformEvents) {
			informPresetChangeListeners();
		}
		return true;
	}